我无法实现 modelformset 将初始值设置为额外的形式
I can't achieve modelformset set initial values to the extra 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 中找到了这个:
Providing initial values
As with regular formsets, it’s possible to specify initial data for forms in the formset by specifying an initial parameter when instantiating the model formset class returned by modelformset_factory(). However, with model formsets, the initial values only apply to extra forms, those that aren’t attached to an existing model instance. If the extra forms with initial data aren’t changed by the user, they won’t be validated or saved.
理论上,初始值应该适用于所有额外的形式。为什么只申请第一个额外表格?
对于表单集,initial
是一个字典列表,其中每个字典都是一个表单的初始数据。
这使您可以为每个额外的表格设置不同的初始数据,例如:
initial = [{'configuration': 'configuration1',},
{'configuration': 'configuration2',},
{'configuration': 'configuration3',},
]
如果您希望每个表单的初始数据相同,您可以这样做:
initial = [{'configuration': configuration,}] * 3)
这是我的代码:
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 中找到了这个:
Providing initial values
As with regular formsets, it’s possible to specify initial data for forms in the formset by specifying an initial parameter when instantiating the model formset class returned by modelformset_factory(). However, with model formsets, the initial values only apply to extra forms, those that aren’t attached to an existing model instance. If the extra forms with initial data aren’t changed by the user, they won’t be validated or saved.
理论上,初始值应该适用于所有额外的形式。为什么只申请第一个额外表格?
对于表单集,initial
是一个字典列表,其中每个字典都是一个表单的初始数据。
这使您可以为每个额外的表格设置不同的初始数据,例如:
initial = [{'configuration': 'configuration1',},
{'configuration': 'configuration2',},
{'configuration': 'configuration3',},
]
如果您希望每个表单的初始数据相同,您可以这样做:
initial = [{'configuration': configuration,}] * 3)