Как установить выбор по умолчанию группы переключателей при загрузке страницы (формы Django, ChoiceField) - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь сделать, казалось бы, простую вещь, но не могу заставить это работать.

Коллекция полей в классе 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)

...

Надеюсь, этого кода достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...