1

我的观点:

form1 = UserProfile(request.POST or None, user=request.user)

我的表格:

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

    first_name = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.first_name }))
    last_name = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.last_name }))

/settings/ name 'self' 处的 NameError 未定义请求方法:GET 请求 URL:

http://localhost:8000/settings/

Django 版本:1.5.2 异常类型:NameError 异常值:未定义名称“self”

到目前为止,我试图找到解决方案,到目前为止,我想出了这些代码,但仍然出错。

4

1 回答 1

0

您不能self在表单字段定义中使用,因为self变量仅在方法中可用。

您的字段是动态的,取决于user构造函数中传递的变量。__init__.py在其中定义您的动态字段self.user

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

        self.fields['first_name'] = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.first_name }))
        self.fields['last_name'] = forms.CharField(max_length=30,required=True,widget=forms.TextInput(attrs={'placeholder': self.user.last_name }))

另见:

于 2013-09-02T19:05:17.683 回答