使用ModelFormSet编辑相关对象

问题描述:

我正在使用模型formset为对象列表生成表格。使用ModelFormSet编辑相关对象

形式:

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。

我尝试添加一个字段到窗体,然后将“初始”和“查询集”传递给formset,但它看起来只需要一个。

你们会怎么做?

感谢

与模型表单集,初始值仅适用于额外的形式,那些没有被绑定到现有对象实例。 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