【发布时间】:2013-01-07 14:09:31
【问题描述】:
经过几个小时的搜索,我必须承认我被打败了。
我已经阅读了 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)
我认为通过提供仅适用于未绑定实例 IIRC 的 initial=queryset,它将填充我的表单集,其中包含查询集所包含的数量。
所以在我的情况下查询集将返回 4 Employments 但是当使用 extra 参数时,我正在构建的表单集仅填充此参数定义的数量,在我的示例中只有 3,因为我只定义了3个额外。增加额外的将逐步填充表单。
我已经尝试将BaseInlineFormSet 子类化,但我并没有真正突破。
我的问题是我将如何使用查询集包含的尽可能多的表单来填充表单集,我并不是真正想要一个精确的解决方案,而是更多指向正确方向的指针! :)
谢谢!
【问题讨论】: