2

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

1 回答 1

1

好的,我找到了。fieldfile_obj在这种情况下,包含图像记录的主键。解决方案是获取一个实例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!")
于 2017-06-30T13:21:04.063 回答