【问题标题】:How to pass in user input into Custom User Model in Django如何将用户输入传递给 Django 中的自定义用户模型
【发布时间】:2018-05-24 16:04:37
【问题描述】:

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

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

【问题讨论】:

  • 完全不清楚你在问什么。为什么你认为你需要把它放在类定义中?你肯定需要一个字段,比如email,你在创建用户时设置的?
  • @DanielRoseman 我已经设置了电子邮件字段。我在问如何将注册表单中的输入传递给模型?假设我有一个价值团队,可以是红色、绿色、蓝色、黄色、橙色,用户可以使用下拉菜单选择其中任何一个,我通过 method = post 在表单中获取值。如何将这些值传递给我的用户模型?
  • 我需要该值进行身份验证。
  • 您的操作方式与所有其他字段完全相同。你是怎么设置邮箱的?这样做。
  • @DanielRoseman 但是如何从我的注册表单中检索该值?

标签: python django forms model


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2019-06-29
    • 2021-02-03
    • 2014-02-07
    • 2015-06-18
    相关资源
    最近更新 更多