Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2009 15:40:41

somaniac
От:
Зарегистрирован: 2009-01-30
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятка с валидацией ChoiceField

Не могу разобраться с валидацией, загадка:

-есть форма:
class SelectForm(forms.Form):
genre = forms.ChoiceField(label=u'Жанр', widget = forms.RadioSelect)

-и вьюшка:
def input(request):
if request.method == 'POST':
inpForm=cineforms.SelectForm(request.POST)
if inpForm.is_valid():
print "Valid"
else:
choice=[]
for i, v in GenreDict.items():
choice.append((i, v))
inpForm=cineforms.CinegenSelectForm()
inpForm.fields['genre'].choices=choice
return render_to_response('input_form.html', {'inpForm': inpForm})
Так вот собственно на форме Жанр отображается, но при нажатии “Submit”, выдает ошибку валидации поля, примерно такого вида:
“Выберите корректный вариант. Detectiv нет среди допустимых значений. ”
Если делать как в примерах документации по формам и делать типа:
CHOICE=(('Detectiv', 'Детектив'),)

class SelectForm(forms.Form):
genre = forms.ChoiceField(label=u'Жанр', widget = forms.RadioSelect, choices=CHOICE)
то все работает отлично. Но мне хотелось бы передавать значения динамически.
Знатоки, подскажите в чем трабла?



Офлайн

#2 Фев. 17, 2009 15:50:23

somaniac
От:
Зарегистрирован: 2009-01-30
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятка с валидацией ChoiceField

Упс, во вьюшке в блоке else:
конечно же inpForm=cineforms.SelectForm(), но это сути вопроса не меняет



Офлайн

#3 Фев. 17, 2009 16:07:48

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Непонятка с валидацией ChoiceField

somaniac
Знатоки, подскажите в чем трабла?
Вы генерируете choices только для пустой формы. Когда пришли данные по POST этих choices в форме нет.



Офлайн

#4 Фев. 17, 2009 17:19:10

somaniac
От:
Зарегистрирован: 2009-01-30
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятка с валидацией ChoiceField

Daevaorn
somaniac
Знатоки, подскажите в чем трабла?
Вы генерируете choices только для пустой формы. Когда пришли данные по POST этих choices в форме нет.
Спасибо, это я понял, но все же, если я передаю при создании формы inpForm=cineforms.CinegenSelectForm(initials={'genre':(('Detective','Детектив'),)})
в моем случае тоже вроде как бред получается. Как правильно делать такие вещи? Переопределить конструктор формы и передавать список со значениями в нем?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version