如何从视图更改表单变量值
我一直在尝试从我的视图中向下面的表单发送数据。
我希望每次调用这个表单时,变量(choices)能有所不同。
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)
问题是:我需要在表单类中改变变量(CHOICES)的值,而这个值需要在视图类中进行更改(我知道我可以直接用 CHOICES = [('b','a')] 来定义),但我想从视图中来修改它,因为这段代码只是用来展示问题的。
有没有更好的想法呢?
提前谢谢你!
1 个回答
2
你可以通过重写表单的init方法来改变字段的选项(这样它就可以接受一个选择参数),或者根据你的需求在初始化之后再改变字段的选项。
第一种情况可以这样做:
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)