Как добавить поле выбора в класс на основе UserCreationForm? - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть вопрос, как я могу добавить ChoiceField в классе UserCreationForm.я пытался добавить, но проблема в том, что «слишком много значений для распаковки (ожидается 2)», я не знаю почему.у меня есть код ниже.Спасибо за помощь

my model.py

class Viewer(models.Model):
    INTERESTS_CHOICES = (
        ('IT', 'IT'),
        ('MARKETING', 'marketing'),
        ('BUISINESS', 'buisiness'),
        ('DESIGN', 'design'),
    )
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    interests = models.CharField(choices=INTERESTS_CHOICES, max_length=8, default='IT')
    def __str__(self):
        return self.user.username

my forms.py

INTERESTS_CHOICES = (
        ('IT', 'IT'),
        ('MARKETING', 'marketing'),
        ('BUISINESS', 'buisiness'),
        ('DESIGN', 'design'),
    )
class ViewerRegisterForm(UserCreationForm):

    email = forms.EmailField(required=False)
    interests = forms.ChoiceField(choices=[INTERESTS_CHOICES])
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']
    @transaction.atomic
    def save(self):
        user = super().save(commit=False)
        user.is_viewer = True
        user.save()
        viewer = Viewer.objects.create(user=user)
        return user

1 Ответ

0 голосов
/ 19 апреля 2019

попробуйте убрать скобки списка рядом с вариантами выбора, и, возможно, forms.Select будет работать лучше?

class ViewerRegisterForm(UserCreationForm):
    fields = ['username', 'interests', 'email', 'password1', 'password2']

widgets = {
    interests = forms.Select(choices=INTERESTS_CHOICES)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...