2015-09-20 110 views
0

我扩展形式干净的方法来获取图像大小,但我需要获取图像的大小,同时扩展ModelForm。如何获取图像大小在forms.py

在下面的表格中,我能够以干净的方法获得图像大小以字节为单位,但我不知道如何在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

只是一个猜测,但是当你发起与照片模式您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 
    ... 
+0

感谢您的回答。我正在寻找实时上传图片大小不知道这是否会给出预期的结果。 – Uma

+0

这将在实例化对象之前 – Uma

+0

如果您正在寻找实时,是否意味着当用户在表单中上传图像时(尚未提交图像),那么它的大小应该指示给用户?您需要使用Javascript调用,这在Django的领域之外。 – LaundroMat