经过几个小时的搜索,我必须承认我被打败了。
我已经阅读了 Django 文档,但我真的找不到解决问题的方法。
考虑以下代码行:
EmploymentFormSet = inlineformset_factory(Profile, Employment, form=EmploymentForm, extra=3)
此代码位于基于类的视图中,该视图继承自UpdateView
该方法并进一步位于该方法中get_context_data(self, *args, **kwargs):
这非常简单,因为 inlineformset_factory 创建了一个就业表单集。
现在考虑这个
queryset = Employment.objects.filter(profile__pk=self.kwargs['pk']).values()
context['emp_formset'] = EmploymentFormSet(prefix='emp_form', initial=queryset, auto_id=True)
我认为通过提供initial=queryset
仅适用于未绑定实例 IIRC 的 ,它将填充我的表单集,其中包含查询集所包含的数量。
因此,在我的情况下,查询集将返回 4 Employments
,但是在使用该extra
参数时,我正在构建的表单集仅填充了该参数定义的数量,在我的示例中只有 3 个,因为我只定义了 3 个附加项。增加额外的将逐渐填充表单。
我试过子类化,BaseInlineFormSet
但我还没有真正突破这堵墙。
我的问题是我将如何使用查询集包含的尽可能多的表单来填充表单集,我并不是真的想要一个精确的解决方案,而是更多的指向正确方向的指针!:)
谢谢!