Как передать пользовательский ввод в Custom User Model в Django - PullRequest
0 голосов
/ 24 мая 2018

У меня есть пользовательская модель, в которую мне нужно добавить дополнительное поле.У меня проблема в том, что необходимая информация - это пользовательский ввод со страницы регистрации.Это код из формы:

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 голосов
/ 25 мая 2018

В итоге я решил эту проблему и хотел опубликовать ее здесь на случай, если кто-нибудь застрянет так, как я:

Если вы расширили UserCreationForm в вашем forms.py, вам нужно перегрузить def save (self, commit = True), и вам нужно скопировать все из метода из исходного кода в этот перегруженный метод, а затем установить значение user.field для своего поля.Для моего примера строка выглядит так:

user.teams = self.cleaned_data['team']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...