1

我正在使用模型形式,

TYPE_SELECT = (
    ('0', 'Live'),
    ('1', 'Test'),
)

class ReportForm(forms.ModelForm): 
    type_select = forms.ChoiceField(widget=forms.RadioSelect(
                        renderer=HorizRadioRenderer),choices=TYPE_SELECT)  
    class Meta:
        model = Report
        fields = ['notes_other','type_select'] 

我的模型看起来像这样

楷模:

class Report(models.Model):
    user = models.ForeignKey(User, null=False)
    type_select = models.BooleanField('Complete', default=True)
    notes_other = models.TextField(null=True, blank=True)

模板是

{{ form.type_select }} 

现在,我想type_select在 5 页中使用此字段。如果用户选择单选按钮并保存在第一页,它应该保存,而在其他剩余页面中,它应该被应用。

如果他想更改选定的选项,他可以更改并保存在 5 个页面中的任何一个页面中,更改应适用于所有页面。

因此,我需要在所有 5 个页面中显示此表单,并且对于每个页面,我还需要将方法传递给视图。

这个怎么做

4

1 回答 1

0

听起来您需要一个填写初始数据的表单。如何在页面视图之间存储该数据取决于您,但这通常在session

这是您将初始数据加载到表单中的方式.. 就像预填充该单选按钮一样。

type_value = request.sesssion.get('type_value')
form = MyForm(initial={'type_select': type_value})
# rest of view

现在,在保存这 5 个表单中的任何一个后,让他们的视图将会话变量“type_value”设置为提交的那个,以使其在请求中持续存在。

if form.is_valid():  # you no doubt have a line like this.
   request.session['type_value'] = form.cleaned_data['type_select']
于 2013-05-30T07:15:08.880 回答