Django-CMS FilerImageField: функция проверки

Я пытаюсь написать валидатор для 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 ответ

Решение

Хорошо, я нашел это. 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!")
Другие вопросы по тегам