我正在使用模型表单,
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 }}
现在,我想在5页中使用这个type_select
字段。如果用户选择单选按钮并保存在第1页,它应该保存,在其他剩余页面中,应该应用它。
如果他想更改所选选项,他可以更改并保存在任何5页中,更改应适用于所有页面。
所以,我需要在所有5个页面中显示此表单,并且每个页面我都需要将该方法传递给视图。
如何做到这一点
答案 0 :(得分: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']