как изменить значения переменной формы из представления

#python #django

#python #django

Вопрос:

я пытался отправить данные в следующую форму из моего представления.

мне нужно, чтобы переменная (варианты) изменялась каждый раз, когда мы вызываем эту форму


class AnswersForm(forms.Form):

 question  = forms.RadioSelect
CHOICES=[('sf','asdf')]
radioButton = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
  

view.py :


def exam_attend(request,ExamName,questionNo=0):

 if ExamName:
    myList = [('b','a')]       
    forms.AnswersForm.CHOICES=myList
    form = forms.AnswersForm()

  variabls = RequestContext(request,{'form':form})
  return render_to_response('exam_pageAttend.html',variabls)
  

проблема в том, что мне нужна переменная (ВАРИАНТЫ) из класса form, чтобы изменить ее значение в классе view (я знаю, что могу просто использовать ВАРИАНТЫ = [('b', 'a')] ), но я хочу изменить ее из представления, поскольку этот код предназначен только для отображения проблемы)

есть идеи получше?

заранее спасибо

Комментарии:

1. Во-первых, пожалуйста, правильно отформатируйте свой код. В нем должен быть отступ, как в реальном Python, чтобы мы могли его прочитать. Во-вторых, почему CHOICES определено внутри класса Form?

Ответ №1:

Вы можете изменить выбор поля, переопределяя метод инициализации формы (чтобы он принимал параметр выбора), или вы можете изменить выбор поля после инициализации, в зависимости от ваших потребностей.

Первый случай был бы таким:

 class AnswersForm(forms.Form):
    radioButton = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())

    def __init__(self, radio_choices= None, *args, **kwargs):
        super(AnswersForm, self).__init__(self, *args, **kwargs)
        if radio_choices is not None:
            self.fields['radioButton'].choices = radio_choices
  

Посмотреть пример:

 form_instance = AnswersForm(new_choices)