#python #django #django-forms
#python #django #django-forms
Вопрос:
у меня есть следующая форма django. в котором есть поле выбора. я пытаюсь получить значение, выбранное в radioSelect
виджете. я использую метод (cleaned_data) для этой задачи. но по какой-то причине он не может получить доступ к методу cleaned_data.
Значение исключения : 'AnswersForm' object has no attribute 'cleaned_data'
forms.py:
class AnswersForm(forms.Form):
CHOICES=[('sf','asdf')]
answers = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
и в views.py:
form = forms.AnswersForm()
form.cleaned_data['answers']
кто-нибудь знает, что происходит? или есть другой способ выполнить это?
заранее спасибо
Ответ №1:
Вы не показываете никакого кода, в котором вы передаете данные в форму или проверяете, допустимы ли они. Обычная практика — это что-то вроде:
if request.method == 'POST':
form = Forms.AnswersForm(request.POST)
if form.is_valid():
do_something_with(form.cleaned_data['answers'])
Вы не можете получить доступ cleaned_data
, пока не вызовете is_valid()
Комментарии:
1. 1 вы можете получить доступ к cleaned_data только после проверки формы
Ответ №2:
Использование Form.clean()
просто возвращает self.cleaned_data
Примечание: Очистите данные в forms.py
def clean(self,):
Here you can clean the form.
** Для справки ** Перейдите сюда (Django doc)
Комментарии:
1.
Form.clean()
есть ли способ увеличить обычную чистую функциональность, которая используется внутри при вызове.valid()
. Вопрос, похоже, не в проверке формы, а скорее в простом доступе к cleaned_data. вызовclean()
— это не способ сделать это.