如何将用户输入传递到Django中的自定义用户模型

时间:2018-05-24 16:04:37

标签: python django forms model

我有一个自定义用户模型,我需要添加一个额外的字段。我遇到的问题是所需的信息是来自注册页面的用户输入。 这是以下形式的代码:

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')

1 个答案:

答案 0 :(得分:0)

我最终解决了这个问题,我想把它发布在这里以防万一有人像我一样被卡住了:

如果你在forms.py中扩展了UserCreationForm,你需要重载def save(self,commit = True)方法,你需要将方法中的所有内容从source code复制粘贴到重载方法中然后将user.field值设置为您的字段。对于我的例子,该行看起来像这样:

user.teams = self.cleaned_data['team']