Я пытаюсь инициализировать форму, содержащую ChoiceField
в django. У меня есть следующий код:Переопределить инициализацию ChoiceField в django
# in file models.py
class Locality(models.Model):
locality = models.CharField(primary_key=True, unique=True, max_length=36)
def __unicode__(self):
return self.locality
# in file forms.py
class RegisterForm(forms.Form):
def __init__(self, *args, **kwargs):
self.username = forms.CharField(required=True)
self.email = forms.EmailField(required=True)
self.locality = forms.ChoiceField(widget=forms.Select())
self.fields['locality'].choices = [l.locality for l in Locality.objects.all()]
но Ун оболочки, когда я пытаюсь создать экземпляр:
г = RegisterForm (имя пользователя = "Toto", электронная почта = "а @ Ь .com ")
Я получаю 'RegisterForm' object has no attribute 'fields' error
. Это происходит, поскольку объект еще не сформирован? Как я могу получить доступ к ChoiceField
?
Любая помощь приветствуется.
почему нет «» супер «»? – mawimawi
Обновлено, как раз перед тем, как я увижу ваш комментарий –
'self.fields ['locality']. Choice = [l.lality для l в Locality.objects.all()]' неверно. вы должны использовать 'self.fields ['locality']. choice = [(l.id, l.lality) для l в Locality.objects.all()]' i означает, что выбор должен быть в формате '[(.., ..), (.., ..), ..] ' – suhailvs