如何访问self.request.user在clean_avatar()中表单.py(Django应用程序)

2024-04-26 00:24:50 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django表单上,我让我的用户上传一个头像。我有一个与中相关的clean_avatar关联的方法表单.py,在上传之前,我正在对提交的头像进行一些处理。如何在这个clean_avatar方法中访问self.request.user?我试过骑过__init__ModelForm,但出了问题。在

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

clean_avatar方法当前如下所示:

def clean_avatar(self):
    image=self.cleaned_data.get("avatar")
    if image:
        try:
            if image.size > 1000000:
                return None
        except:
            pass
        image = Image.open(image)
        image = MakeThumbnail(image)
        return image
    else:
        return None   

Tags: django方法用户pyimageselfcleannone
1条回答
网友
1楼 · 发布于 2024-04-26 00:24:50

我认为最好将它作为一个额外的参数传递到表单中,这样您就可以在整个表单中使用它:

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

你的视图.py方法:

^{pr2}$

相关问题 更多 >