我有一个产品模型和一个价格模型。价格模型对产品模型有 FK。可能有多个价格(取决于售出的单位数量)。在 django 1.2.5 http://yergler.net/blog/2009/09/27/nested-formsets-with-django/之前可以解决这个问题。但详细http://www.mail-archive.com/django-users@googlegroups.com/msg124195.html这不再有效。
最终想要的结果:下面的表格来编辑和添加数据。
产品一-价格一、数量-价格二、数量 产品二-价格一、数量 产品三-价格一、数量-价格二、数量-价格三、数量
为了清楚起见,转载:
在 Nathan 的原始代码中,最底层的表单集是这样创建的:
TenantFormset(data=self.data,
instance=instance,
prefix='TENANTS_%s' % pk_value)
其中 instance 是 Building 的实例,租户的“父级”或容器,self 是
class BaseBuildingFormset(BaseInlineFormSet)
这是这样实例化的:
BuildingFormset = inlineformset_factory(models.Block,
models.Building,
formset=BaseBuildingFormset,
extra=1)
为了解决这个问题,我停止传入 self.data,这导致最底层的表单始终具有 is_bound = False,即使在渲染并发布回视图之后也是如此。因此验证总是失败并且表单所代表的对象不能被更新。我已经使用 Nathan 博客文章中的代码重现了该行为,因此这种嵌套表单集的方法似乎不再有效,或者代码需要调整才能在 1.3 中工作。
在 Django 1.2.5 之前,Nathan 的代码运行良好。但是在 1.3 中,如果将 self.data 传递给 TenantFormset,则结果为空并引发 ValidationError,因为尚未提供 ManagementForm 信息。
这是#11418,AFAICT 的预期结果。
有没有人对如何使它起作用有任何其他想法?
干杯,
(抱歉没有详细的代码示例 - Nathan 的帖子比我的代码更清晰,所以我建议你看一下。)
一般说明:关于如何做到这一点似乎有很多困惑,这里的回复显示http://www.reddit.com/r/django/comments/hwyto/is_there_a_way_to_do_nested_formsets_in_django/