我没有使用ModelForm
。我使用instance
将值传递给formset表单。无论如何,根据查询集的值动态更改字段的小部件?
我想要做的是显示表单元素或仅显示文本,具体取决于标志是否为真。
initial=[
{
'name': u'Foo',
'date1': 'Jan-13',
'date2': 'Feb-13',
'value1': 11.32,
'value2': 54.13, # e.g add PlainTextWidget to this field
# ...
},
{
'name': u'Bar',
'date1': 'Jan-13',
'date2': 'Feb-13',
'value1': 1,
'value2': 54.13,
# ...
},
# ...
]
form = MonthlyFormset(initial = initial)
答案 0 :(得分:1)
更改窗口小部件的简便方法在您的视图中:
initial=[
{
'name': u'Foo', ...
'value2': 54.13, # e.g add PlainTextWidget to this field
# ...
},
{
'name': u'Bar', ...
'value2': 54.13,
# ...
},
# ...
]
formset = MonthlyFormset(initial = initial )
for form in formset:
#check for flag:
if form.fields['name'].initial = u'Bar':
#changing widget
form.base_fields['name'].widget = PlainTextWidget()
我还没有测试过这段代码,请回复一下评论。此外,我不确定是什么PlainTextWidget
,我希望这将是您编写的自定义小部件。