我想将first_name
,last_name
和email
字段添加到UserProfile管理页面。因此,您可以在UserProfile管理员中更改所有用户的详细信息,而不必转到其他页面来更改电子邮件和其他一些字段。
这就是我的自定义表单:
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
详细信息提供给正确的表单类。
答案 0 :(得分:2)
要在init方法中设置初始值,可以使用字段字典。
def __init__(self, *a, **k):
# < snip >
self.fields[ 'email' ].initial = self.user_instance.email
# ... and any others