如何访问forms.py(django应用程序)中clean_avatar()中的self.request.user

时间:2016-02-15 05:32:59

标签: python django forms

在Django表单上,我让我的用户上传了一个头像。我有一个clean_avatar方法与forms.py中的相关ModelForm相关联,我在上传之前对提交的头像进行了一些处理。如何使用此self.request.user方法访问clean_avatar?我试图超越__init__的{​​{1}}但是蠢蠢欲动。

对于有兴趣的人,我想在ModelForm方法中访问self.request.user,以检查正在上传的现在的头像是否与用户提交的头像相同< em>就在此之前。这将有助于我在重新提交表单的情况下节省带宽(我已经检查过;在我的应用程序中,重新提交导致化身也被重新提交,并重新处理)。

clean_avatar方法目前如下所示:

clean_avatar

1 个答案:

答案 0 :(得分:1)

我认为将它作为额外参数传递给您的表单会更好,以便您可以在整个表单中使用它:

class FooForm(models.ModelForm):
    def __init__(self, *args, **kwargs):
        # you take the user out of kwargs and store it as a class attribute
        self.user = kwargs.pop('user', None)
        super(FooForm, self).__init__(*args, **kwargs)

    def clean_avatar(self):
        current_user = self.user
        # use current_user

你的views.py方法:

def view(request):
    foo_form = FooForm(request.POST or None, user=request.user)