我发现这篇关于如何使用额外字段(例如“电子邮件”)扩展 UserCreationForm 的帖子。但是,电子邮件字段已在预构建的用户模型中定义。
我创建了一个额外的模型(称为 UserProfile),它进一步扩展了 Django 的预构建用户类。如何让我在 UserProfile 中定义的这些字段出现在我的 UserCreationForm 中?
我发现这篇关于如何使用额外字段(例如“电子邮件”)扩展 UserCreationForm 的帖子。但是,电子邮件字段已在预构建的用户模型中定义。
我创建了一个额外的模型(称为 UserProfile),它进一步扩展了 Django 的预构建用户类。如何让我在 UserProfile 中定义的这些字段出现在我的 UserCreationForm 中?
根据您的模型添加字段UserProfile
(不幸的是,使用 a 来避免重复自己不太容易ModelForm
),然后UserProfile
在覆盖的save()
函数中创建并保存一个新实例。改编自您链接到的帖子:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserCreateForm(UserCreationForm):
job_title = forms.CharField(max_length=100, required=True)
age = forms.IntegerField(required=True)
class Meta:
model = User
def save(self, commit=True):
if not commit:
raise NotImplementedError("Can't create User and UserProfile without database save")
user = super(UserCreateForm, self).save(commit=True)
user_profile = UserProfile(user=user, job_title=self.cleaned_data['job_title'],
age=self.cleaned_data['age'])
user_profile.save()
return user, user_profile