Я пытаюсь сделать, казалось бы, простую вещь, но не могу заставить это работать.
Коллекция полей в классе Form с объектами класса ChoiceField.Виджет, назначенный этим ChoiceField, является RadioSelect.Атрибуту choices этих объектов присваивается один список пар значение-текст.Форма отображается правильно и подключена к базе данных, но я не могу получить первый переключатель, который будет выбран по умолчанию при загрузке страницы.при загрузке страницы не выбраны кнопки.
Было много вопросов, которые, похоже, касались такой проблемы, как у людей, но ни одно из прочитанных мной предложений не помогло мне.
Пробовалустанавливая атрибут по умолчанию, когда поле выбора объявлено в классе Form,
В представлении, которое срабатывает при вводе URL-адреса страницы формы (и обрабатывает отправку формы), существует условие IF ELSE, которое проверяет, является ли запросэто «POST» (или иначе).Я предполагаю, что проблема в остальной части.
В условии else я установил начальный атрибут объявленного объекта формы (со словарем> Объявленный_choicefield_attribute: 'Unspecified' - первый выбор по умолчанию, который мне нужен) ВЯ попытался изменить пару «Unspecified» на «-6» (-6 - значение переключателя), а также целое число -6.
Пробовал вещи в других постах, которые приняли ответы, но не сработали.Не уверен, что я здесь прав, но в одном посте говорится, что GET-запросы не устанавливают значения по умолчанию (что-то вроде этого). В другом посте говорится, что эта проблема (или похожая проблема) связана с браузером.
(класс формы ниже)
класс SubmitFeedback (forms.Form):
CHOICES = [(-6,'Unspecified'),(-5,'-5'),(-4,'-4'),(-3,'-3'),(-2,'-2'),
(-1,'-1'),(-0,'-0'),(1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5')]
user_satisfaction = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect)
ease_of_use = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect)
класс Meta:
labels = {
'user_satisfaction':'How satisfied are you with this website?',
'ease_of_use':'How easy or difficult was this site to use?',
}
def clean_user_satisfaction(self):
data = self.cleaned_data['user_satisfaction']
return data
def clean_ease_of_use(self):
data = self.cleaned_data['ease_of_use']
return data
(вид обработки формы приведен ниже :)
def handleFeedbackForm (запрос):
feedbackForm = SubmitFeedback()
if request.method == 'POST':
feedbackForm = SubmitFeedback(request.POST)
if feedbackForm.is_valid():
newFeedback = Feedback()
newFeedback.user_satisfaction = feedbackForm.cleaned_data['user_satisfaction']
newFeedback.ease_of_use = feedbackForm.cleaned_data['ease_of_use']
newFeedback.save()
return HttpResponseRedirect( reverse('feedback_form') )
else:
feedbackForm = SubmitFeedback( initial={
'user_satisfaction':'-6',
'ease_of_use':'Unspecified',
} )
context = {
'form' : feedbackForm,
}
return render(request,'userfeedback/feedback_form.html',context)
...
Надеюсь, этого кода достаточно.