Форма рендера с выбором Джанго - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть форма 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 field in form %}{% render_field field class="form-control" %}.

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

ValueError: too many values to unpack (expected 2)

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

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

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

{{ form }}

0 голосов
/ 13 сентября 2018

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

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