#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)