Python Django Admin model.clean()检查上载文件的属性

Python Django Admin model.clean()检查上载文件的属性,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有一个Django模型,它允许上传图像,但在保存到Django管理员中之前,我需要验证上传的图像是否符合其维度的特定标准,如果不符合,则显示验证错误 到目前为止我所拥有的(不多!) 当然,这会抛出一个FileNotFound错误,因为我假设在代码的这一点上,该文件实际上没有保存到upload_to路径中 请注意,没有用于此的自定义表单,因为所有这些都将直接在Django管理页面中进行管理 如何在model.clean()方法中获取文件字段文件的维度/属性 我想这应该是使用临时上传文件的方式吧

我有一个Django模型,它允许上传图像,但在保存到Django管理员中之前,我需要验证上传的图像是否符合其维度的特定标准,如果不符合,则显示验证错误

到目前为止我所拥有的(不多!)

当然,这会抛出一个FileNotFound错误,因为我假设在代码的这一点上,该文件实际上没有保存到upload_to路径中

请注意,没有用于此的自定义表单,因为所有这些都将直接在Django管理页面中进行管理

如何在model.clean()方法中获取文件字段文件的维度/属性

我想这应该是使用临时上传文件的方式吧

非常感谢您的任何帮助,我愿意为此提供其他方法/途径

编辑:如果有什么不同,我使用的是Django 2.2,这里是您需要的

def validate_image(image):
    img = Image.open(image.file)
    width, height = img.size
    # check height and width
    if "does not meet requirements":
        raise ValidationError("Error - your message")

image_file = models.ImageField('Image', upload_to=image_upload_path, validators=[validate_image])

这并不重要;我的工作做得不太好,但让我走上了正确的道路。我仍然需要使用img=Image.open(Image.file)然后使用width,height=img.size来获取高度/宽度,而不是直接访问Image.file.width等。因此我对此进行了编辑
def validate_image(image):
    img = Image.open(image.file)
    width, height = img.size
    # check height and width
    if "does not meet requirements":
        raise ValidationError("Error - your message")

image_file = models.ImageField('Image', upload_to=image_upload_path, validators=[validate_image])