Django User Create Form раскрывающиеся списки не отображаются - PullRequest
0 голосов
/ 28 мая 2018

У меня есть пользовательский класс, который разделен на подклассы от абстрактного пользователя:

models.py:

class CustomUser(AbstractUser):

    birth_year = models.PositiveIntegerField(choices=birth_year_choices)
    gender = models.CharField(max_length=1, choices=gender_choices)
    education = models.CharField(max_length=1, choices=education_choices)
    occupation = models.CharField(max_length=1, choices=occupation_choices)
    sector = models.CharField(max_length=1, choices=sector_choices)
    email = models.EmailField(max_length=254, null=True)

    REQUIRED_FIELDS = ['birth_year', 'gender', 'education', 'occupation', 'sector']

И форма регистрации для создания такого пользователя: forms.py:

from .models import CustomUser

class SignUpForm(UserCreationForm):
    username = forms.CharField()
    birth_year = forms.IntegerField()
    gender = forms.CharField()
    education = forms.CharField()
    occupation = forms.CharField()
    sector = forms.CharField()
    email = forms.EmailField()

    class Meta:
        model = CustomUser
        fields = ('username', 'birth_year', 'gender', 'education', 'occupation', 'sector','email')

И представление на основе классов для отображения этого: views.py:

class SignUpView(CreateView):
    form_class = SignUpForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

Насколько я понимаю, django должен автоматически предоставлять виджет. Выберите для каждого поля модели, которое имеет выбор, ивизуализировать форму с выпадающими списками, но это не так, есть только текстовое поле.Ясно, что одним из решений является дублирование выбора в forms.py, а также models.py, но это, похоже, нарушает принцип DRY в django.Есть ли лучшее решение?

...