如何判断用户是否在django ModelForm中更改了文件

时间:2015-11-30 21:19:39

标签: django django-forms

我有一个带有图像字段的django ModelForm。我想在用户提交表单时调整图像大小,但前提是他们上传了新图像。我的代码如下所示:

class EditProfileForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ['picture', '...']

    def clean_picture(self):
        picture = self.cleaned_data['picture']
        if picture.file: #This isn't right though
            #resize it
        return picture

但是,如果正在编辑的模型包含文件,则picture.file似乎始终存在。我知道我可以在视图中查看request.FILES,但这非常不优雅。还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

通常,您可以使用self.changed_data执行此操作,该this post返回值更改的字段名称列表。 <{1}}是否存在任何特殊情况会干扰我不知道。

答案 1 :(得分:0)

在js中,

  • 在JS中,设置一个全局变量file_changed = 0.
  • HTML输入标记&lt;输入ng-model =&#34; avatar&#34;类型=&#34;文件&#34;平变化=&#34; ChangeFile()&#34;&GT;
  • 让我们说ChangeFile()将提供要上传的文件的小预览
  • 在函数ChangeFile中,选择文件后设置file_changed = 1.