как изменить значения переменных формы из вида - PullRequest
1 голос
/ 06 мая 2011

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

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

class AnswersForm(forms.Form):</p> <pre><code>question = forms.RadioSelect CHOICES=[('sf','asdf')] radioButton = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())

view.py:

def exam_attend(request,ExamName,questionNo=0):</p> <pre><code>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 голосов
/ 06 мая 2011

Вы можете изменить выбор полей, переопределяя метод формы init (чтобы он принимал параметр выбора), или вы можете изменить выбор полей после 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...