我无法实现modelformset为额外的表单设置初始值

时间:2015-07-16 10:17:04

标签: django django-forms

这是我的代码:

GaugeFormSet = modelformset_factory(GaugeConfiguration,form=GaugeConfigurationForm, extra=3, fields='__all__') 
gauges = GaugeConfiguration.objects.filter(configuration=configuration)
gaugeformset = GaugeFormSet(queryset=gauges, initial=[{'configuration':configuration,}])

问题是初始参数仅适用于第一个额外形式,而不适用于其他形式。

我在Django Documentation中找到了这个:

  

提供初始值

     

与常规表单集一样,通过在实例化modelformset_factory()返回的模型formset类时指定初始参数,可以为表单集中的表单指定初始数据。但是,对于模型表单集,初始值仅适用于额外的表单,即未附加到现有模型实例的表单。如果用户未更改带有初始数据的额外表格,则不会对其进行验证或保存。

理论上,初始值应适用于所有额外形式。为什么只适用于第一个额外的表格?

1 个答案:

答案 0 :(得分:2)

对于表单集,initial是字典列表,其中每个字典是一个表单的初始数据。

这允许您为每个额外表单提供不同的初始数据,例如:

initial = [{'configuration': 'configuration1',},
          {'configuration': 'configuration2',},
          {'configuration': 'configuration3',},
          ] 

如果您希望每个表单都有相同的初始数据,您可以这样做:

initial = [{'configuration': configuration,}] * 3)