Django如何在我的窗体类中获取当前用户

2024-09-30 12:27:53 发布

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

我想让当前用户登录我的表单.py在CharField中显示其传记的类(带有占位符或值)

我试过init方法,但它对我不起作用idk我做错了什么。。。你知道吗

这是我的形式课

class ProfileSettingsForm(forms.Form):
    avatar = forms.ImageField(required=False)
    description = forms.CharField(required=False, max_length=230, widget=forms.Textarea(attrs={"value": "here i want the description of the current user"}))


使用init

class ProfileSettingsForm(forms.Form):

    def __init__(self, user, *args, **kwargs):
        self.user = user
        super(ProfileSettingsForm, self).__init__(*args, **kwargs)


    avatar = forms.ImageField(required=False)
    description = forms.CharField(required=False, max_length=230, widget=forms.Textarea(attrs={"value": self.user}))

我试过这个方法

class ProfileSettingsForm(forms.Form):

    user = None

    def __init__(self, user, *args, **kwargs):
        self.user = user
        super(ProfileSettingsForm, self).__init__(*args, **kwargs)

    avatar = forms.ImageField(required=False)
    description = forms.CharField(required=False, max_length=230, widget=forms.Textarea(attrs={"value": self.user}))

但它没有回报


在我的视图.py地址:

form = forms.ProfileSettingsForm(user=request.user)

Tags: selfformfalseinitrequiredargsformsdescription
1条回答
网友
1楼 · 发布于 2024-09-30 12:27:53

如果您使用的是基于类的视图,那么可以重写get_form_kwargs方法。你知道吗

视图.py

# View might not be the correct class for you to inherit from, it's more a example. Having said that, you'd probably use CreateView
class YourView(View):
    def get_form_kwargs(self):
        form = super().get_form_kwargs()
        form['user'] = self.request.user
        return form

表单.py

class ProfileSettingsForm(forms.Form):
    def __init__(self, user, *args, **kwargs):
        self.user = user
        super(ProfileSettingsForm, self).__init__(*args, **kwargs)

    avatar = forms.ImageField(required=False)
    description = forms.CharField(required=False, max_length=230, widget=forms.Textarea(attrs={"value": self.user}))

相关问题 更多 >

    热门问题