2017-06-30 9 views
0

Django-CMS FilerImageFieldのバリデーターを書こうとしています。次のバリデーター関数は、デフォルトのImageFieldに使用されます。新しいモデルにコピーすると、メッセージ'int' object has no attribute 'file'がクラッシュします。明らかに、異なるタイプの値がバリデータ関数に渡されています。どのような種類のデータがバリデーターに渡されているかに関する情報を見つけることができないようです。私はget_image_dimensions()できるようにファイルを正しく参照するにはどうすればいいですか?Django-CMS FilerImageField:バリデーター関数

def validate(fieldfile_obj): 
    width, height = get_image_dimensions(fieldfile_obj.file) #crash 
    if width > 1000: 
     raise ValidationError("This is wrong!") 

答えて

0

私はそれを見つけました。この場合の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!") 
関連する問題