如何在forms.py中获取图像大小

时间:2015-09-20 12:57:41

标签: django django-forms

我正在扩展表单清理方法以获取图像大小,但我需要在扩展ModelForm时获取图像的大小。

在下面的表格中,我可以在clean方法中获取图像大小(以字节为单位),但我不知道如何在 init 中获取该图像。

重要的一点是,这应该在图像大小保存到数据库之前得到它。

这件事现在让我头晕了一个多星期了:(。有人可以为此提供帮助。

forms.py

class PhotoForm(forms.ModelForm):
    def clean_old_image(self):
        image = self.cleaned_data.get('old_image', False)
        print 'old_image._size', image.size
        return image


    def __init__(self, *args, **kwargs):

        super(PhotoForm, self).__init__(*args, **kwargs)
        image_size = **# SHOULD BE ABLE TO GET THE IMAGE SIZE HERE**
        self.fields['old_image'] = ProcessedImageField(spec_id='myapp:test_app:old_image',
                                           processors=[CustomCompress()],
                                           format='JPEG',
                                           options={'quality': 60}
                                           )
    class Meta:
        model = Photo
        fields = ['old_image']

1 个答案:

答案 0 :(得分:0)

只是一个猜测,但当您使用Photo模型实例化PhotoForm时,如:

photo = Photo.objects.get(id=1)
photo_form = PhotoForm(instance=photo)

然后可以通过

简单地检索image_size
def __init__(self, *args, **kwargs):
    super(PhotoForm, self).__init__(*args, **kwargs)
    if self.instance:
        image_size = self.instance.image.size
    ...