将值插入\uuu init\uuu时的ModelForm字段

2024-06-26 04:24:41 发布

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

我想将first_namelast_nameemail字段添加到UserProfile管理页。因此,您可以在UserProfile admin中更改所有用户的详细信息,而不必转到其他页面来更改电子邮件和其他一些字段。你知道吗

这是我的自定义窗体的外观:

class CustomProfileForm(forms.ModelForm):
    first_name = forms.CharField(max_length=30)
    last_name = forms.CharField(max_length=30)
    email = forms.EmailField()

    class Meta:
        model = UserProfile

    def __init__(self, *a, **k):
        super(CustomProfileForm, self).__init__(*a, **k)
        self.user_instance = None
        if self.instance:
            self.user_instance = self.instance.user

    def clean_first_name(self):
        self.user_instance.first_name = self.cleaned_data['first_name']

    def clean_first_name(self):
        self.user_instance.last_name = self.cleaned_data['laset_name']

    def clean(self):
        self.user_instance.save()
        return self.cleaned_data

class UserProfileAdmin(admin.ModelAdmin):
    form = CustomProfileForm

我不知道该怎么做才能完成这个。我需要将user_instance详细信息提供给适当的form类。你知道吗


Tags: instancenameselfcleandataemaildefforms
1条回答
网友
1楼 · 发布于 2024-06-26 04:24:41

要在init方法中设置初始值,可以使用fields字典。你知道吗

def __init__(self, *a, **k):
    # < snip >
    self.fields[ 'email' ].initial = self.user_instance.email
    # ... and any others

相关问题 更多 >