Django Admin和ImageField维度限制

时间:2016-09-24 14:18:52

标签: python django django-admin

我正在使用Django 1.10.1。

我有一个带有ImageField的模型,当有人试图在Django Admin站点上传大于900x900px的文件时,我想触发错误。

最简单的方法是什么?我更喜欢在Model类中执行此操作,因为它永远不应该被允许保存更大的图像,但是我已经读过某个地方它不可能因为你无法访问图像数据因为数据没有保存。

2 个答案:

答案 0 :(得分:1)

您可以覆盖data AXPM061204200; set a; call execute ("data work.data_"||strip(put(_ric,$13.))||"_"||strip(put(date,yymmddn8.))||"; set work.a;if date="||date||" and _ric="||input(_ric,$13.)||";run;"); run; 课程的表单并验证图片尺寸。

ModelAdmin

答案 1 :(得分:0)

对于Django 2及更高版本,可以使用更简单的方法来实现。 只要记住FAT模型的Django原理的2个Scoops。使用models.py并包括对ImageField的自定义验证,然后可以将其用于您创建的其他模型的任何相关ImageField。因此,表单和管理员自然会运行此验证并输出错误

示例代码

将其插入到在您的应用程序下创建的名为validators.py的新文件

from django.core.exceptions import ValidationError from django.core.files.images import get_image_dimensions

def image_restriction(image): image_width, image_height = get_image_dimensions(image) if image_width >= ??? or image_height >= ???: raise ValidationError('Image width needs to be less than 128px')

然后在模型中只需导入并包含

from apps.assessment.validators import image_restriction image = models.ImageField(validators=[image_restriction], upload_to='assessment_images')