使用ModelFormSet编辑相关对象

时间:2014-10-20 18:56:13

标签: django django-forms django-views

我正在使用模型formset为对象列表生成表单表。

形式:

class UserTypeModelForm(ModelForm):
    account_type = ChoiceField(label='User type',
                               choices=ACCOUNT_OPTIONS, required=False)

    class Meta:
        model = get_user_model()
        fields = ('account_type',)


UserTypeModelFormSet = modelformset_factory(get_user_model(),
                                            form=UserTypeModelForm, 
                                            extra=0)

查看:

formset = UserTypeModelFormSet(queryset=users, prefix='formset')

现在我的客户希望能够修改相关字段:user.employee_profile.visible。

我尝试在表单中添加一个字段,然后传递" initial"和" queryset"对于formset,但它看起来只需要一个。

你们会怎么做?

由于

1 个答案:

答案 0 :(得分:1)

  

对于模型表单集,初始值仅适用于额外的表单,即未绑定到现有对象实例的表单。   Django docs

queryset提供绑定字段的选定/输入值,额外字段的initial(在您的情况下为0)。

但您可以覆盖初始值,例如在这种情况下创建名为employee的字段时的视图:

for form in forms:
    # Don't override a selected value.
    if not form.fields['employee'].initial:
        form.fields['employee'].initial = my_init