我有一个自定义用户模型,我需要添加一个额外的字段。我遇到的问题是所需的信息是来自注册页面的用户输入。 这是以下形式的代码:
team = forms.ChoiceField(choices=teamChoices)
这是我的用户模型:
class User(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
我需要添加以下内容:
groups = 'team'
但我不知道如何将这些信息传达给我的模特。我的用户模型位于models.py中,我的注册表单位于forms.py。
这是我目前的注册表格,但我还没有通过测试,看看它是否有效:
class RegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=30,widget=forms.TextInput(attrs={'placeholder':'First Name', 'class': 'form-input'}))
last_name = forms.CharField(max_length=30,widget=forms.TextInput(attrs={'placeholder':'Last Name', 'class': 'form-input'}))
email = forms.EmailField(max_length=254, widget=forms.TextInput(attrs={'placeholder':'Email', 'class': 'form-input'}))
teamChoices = (('red','red'),('green','green'),('blue','blue'),('orange','orange'))
team = forms.ChoiceField(choices=teamChoices)
class Meta:
model = User
fields = ('first_name','last_name','email','team','password1','password2')
答案 0 :(得分:0)
我最终解决了这个问题,我想把它发布在这里以防万一有人像我一样被卡住了:
如果你在forms.py中扩展了UserCreationForm,你需要重载def save(self,commit = True)方法,你需要将方法中的所有内容从source code复制粘贴到重载方法中然后将user.field值设置为您的字段。对于我的例子,该行看起来像这样:
user.teams = self.cleaned_data['team']