Форма рендеринга с помощью select django

У меня есть форма django, созданная моделью.

class Manager(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    gender = models.CharField(max_length=50)
    birth_date = models.DateField()
    phone_number = models.CharField(max_length=10)
    region_of_residence = models.CharField(max_length=50)
    city_of_residence = models.CharField(max_length=50)
    common_of_redidence = models.CharField(max_length=50)
    address_of_residence = models.CharField(max_length=50)
    zip_of_residence = models.CharField(max_length=50)
    username = models.CharField(max_length=20)
    email = models.CharField(max_length=200)
    password = models.CharField(max_length=100)

    def __str__(self):
        return self.username

Я создал форму для перезаписи некоторых полей и добавления других таким образом:

class ManagerForm(forms.ModelForm):
    gender = forms.ChoiceField(choices=GENDER_CHOICES)
    password = forms.CharField(widget=forms.PasswordInput())
    verify_password = forms.CharField(widget=forms.PasswordInput())

    class Meta:
        model = Manager
        fields = ('first_name', 'last_name', 'gender', 'birth_date', 
'phone_number', 'region_of_residence', 'city_of_residence',
              'common_of_redidence', 'address_of_residence', 
'zip_of_residence', 'username', 'email', 'password',)

    def clean(self):
        cleaned_data = super(ManagerForm, self).clean()
        password = cleaned_data.get("password")
        verify_password = cleaned_data.get("verify_password")

        if password != verify_password:
            raise forms.ValidationError(
                "password and verify_password does not match"
            )

Я поместил свой выбор во внешний файл, и они:

GENDER_CHOICES = [
    _('Non specificato'),
    _('Uomo'),
    _('Donna')
]

теперь я хотел бы отобразить свою форму с помощью простого оператора for

{% for field in form %}{% render_field field class="form-control" %}.

Но я получаю следующую ошибку:

ValueError: too many values to unpack (expected 2)

как я могу правильно отобразить эти поля?

У вас синтаксическая ошибка, лишняя скобка: {% for field in form %}{*{*%

schrodigerscatcuriosity 13.09.2018 19:10

в исходном коде нет, это опечатка

masaterofnothing 13.09.2018 19:12
0
2
21
2

Ответы 2

CHOICES должен быть списком из 2 кортежей, состоящих из значения db и отображаемого значения. Например:

GENDER_CHOICES = [
    ("N", _('Non specificato')),
    ("U", _('Uomo')),
    ("D", _('Donna'))
]

Почему бы вам просто не визуализировать форму с помощью:

{{ form }}

Другие вопросы по теме