我正在扩展表单清理方法以获取图像大小,但我需要在扩展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']
答案 0 :(得分:0)
只是一个猜测,但当您使用Photo模型实例化PhotoForm时,如:
photo = Photo.objects.get(id=1)
photo_form = PhotoForm(instance=photo)
然后可以通过
简单地检索image_sizedef __init__(self, *args, **kwargs):
super(PhotoForm, self).__init__(*args, **kwargs)
if self.instance:
image_size = self.instance.image.size
...