初始化Django模型formset附加表单字段

时间:2020-08-13 10:17:08

标签: django django-forms

我对ModelFormset有以下定义:

class MyModelDetailsForm(forms.ModelForm):
    status = forms.ChoiceField(choices=MyModel.STATUS)

    class Meta:
        model = MyModel
        fields = ['id']


MyModelDetailsFormset = modelformset_factory(
    MyModel,
    form=MyModelDetailsForm,
    extra=0)

这就是我在get_context_data中创建实例的方式

formset = MyModelDetailsFormset(queryset=self.my_models)

如果我这样初始化status字段:

for form in formset:
    form.fields['status'].initial = get_initial_value()

一切正常。

如果我想做这样的事情(回答https://stackoverflow.com/a/23497278之后):

formset = MyModelDetailsFormset(queryset=self.my_models, initial=[{'status':1},{'status':2}])

初始值不起作用。我的意思是:

for form in formset:
   print(form.fields['status'].initial)

打印None

为什么会这样?我想念什么吗?

1 个答案:

答案 0 :(得分:0)

我看到我犯了错误。根据{{​​1}}:

但是,对于模型表单集,初始值仅适用于额外的表单,那些未附加到现有模型实例的表单。

换句话说,似乎没有办法用初始字典初始化这些值。