2011-05-06 24 views
1

我一直在嘗試從我的視圖向以下表單發送數據。如何從視圖中更改表單變量值

我需要的變量(選擇)每次我們稱這種形式的時候改變

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 = [('b','a')]],但我想從視圖中改變它,因爲這段代碼只是爲了顯示問題)

有什麼更好的點子?

在此先感謝

+0

首先,請正確格式的代碼。它需要像真正的Python一樣縮進,以便我們可以讀取它。其次,爲什麼'CHOICES'在Form類中定義? – 2011-05-06 10:22:05

回答

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) 
+0

正是我需要的,謝謝! – 2011-05-06 13:52:43