Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在forms.py中获取图像大小_Django_Django Forms - Fatal编程技术网

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

Django 如何在forms.py中获取图像大小,django,django-forms,Django,Django Forms,我正在扩展forms clean方法以获得图像大小,但我需要在扩展ModelForm时获得图像的大小 在下面的表格中,我能够在clean方法中获得以字节为单位的图像大小,但我不确定如何在init中获得它 重要的一点是,在将图像保存到数据库之前,应该先获取图像大小 这件事让我头疼了一个多星期了:)有人能帮我一下吗 forms.py class PhotoForm(forms.ModelForm): def clean_old_image(self): image = sel

我正在扩展forms clean方法以获得图像大小,但我需要在扩展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']

只是一个猜测,但当您使用照片模型实例化照片表单时,如中所示:

photo = Photo.objects.get(id=1)
photo_form = PhotoForm(instance=photo)
然后图像大小可以通过

def __init__(self, *args, **kwargs):
    super(PhotoForm, self).__init__(*args, **kwargs)
    if self.instance:
        image_size = self.instance.image.size
    ...

谢谢你的回答。我正在寻找实时上传图像大小,不确定这是否会产生预期的结果。这将在实例化对象之前。如果你正在寻找实时,你的意思是当用户上传表单中的图像时(尚未提交它),那么它的大小应该指示给用户?您需要使用Javascript调用,这超出了Django的范围。