我正在尝试为Django-CMS FilerImageField
编写验证器。以下验证器函数用于默认ImageField
。当我将其复制到新模型时,它将崩溃并显示消息'int' object has no attribute 'file'
。显然,将一种不同类型的值传递给验证器函数。我似乎无法找到有关将哪种数据传递给验证器的信息。如何正确引用该文件,以便get_image_dimensions()
?
def validate(fieldfile_obj):
width, height = get_image_dimensions(fieldfile_obj.file) #crash
if width > 1000:
raise ValidationError("This is wrong!")
答案 0 :(得分:1)
好的,我找到了。在这种情况下,fieldfile_obj
包含Image记录的主键。解决方案是获取filer.models.Image
的实例并将此实例的file
属性传递给验证器函数:
from filer.models import Image
# ... code ...
def validate(fieldfile_obj):
image = Image.objects.get(pk=fieldfile_obj)
width, height = get_image_dimensions(image.file)
if width > 1000:
raise ValidationError("This is wrong!")