Найти - Пользователи
Полная версия: Непонятка с валидацией ChoiceField
Начало » Django » Непонятка с валидацией ChoiceField
1
somaniac
Не могу разобраться с валидацией, загадка:
-есть форма:
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)
то все работает отлично. Но мне хотелось бы передавать значения динамически.
Знатоки, подскажите в чем трабла?
somaniac
Упс, во вьюшке в блоке else:
конечно же inpForm=cineforms.SelectForm(), но это сути вопроса не меняет
Александр Кошелев
somaniac
Знатоки, подскажите в чем трабла?
Вы генерируете choices только для пустой формы. Когда пришли данные по POST этих choices в форме нет.
somaniac
Daevaorn
somaniac
Знатоки, подскажите в чем трабла?
Вы генерируете choices только для пустой формы. Когда пришли данные по POST этих choices в форме нет.
Спасибо, это я понял, но все же, если я передаю при создании формы inpForm=cineforms.CinegenSelectForm(initials={'genre':(('Detective','Детектив'),)})
в моем случае тоже вроде как бред получается. Как правильно делать такие вещи? Переопределить конструктор формы и передавать список со значениями в нем?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB