Django-CMS FilerImageField:Validator函数

时间:2017-06-30 12:48:06

标签: django-cms django-filer

我正在尝试为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!")

1 个答案:

答案 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!")