我有两个型号
class A(models.Model):
name = models.CharField(50)
type = models.CharField(50)
class B(models.Model):
field1 = ForeignKeyField(A)
value = IntegerField()
我想通过ModelFormSet(来自模型A)显示多个表单,其中每个表单依次为连接到对象的所有对象显示InlineFormSets(来自模型B)。
如何在django视图中的save方法中结合使用modelformsets(模型A)和内联formset(mdoel B)?
答案 0 :(得分:1)
一周前我一直在努力解决这个问题。我建议你开始使用inlineformset_factory方法:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/
然后,只需将基本表单和formset添加到视图中并进行渲染。
以下是一些博客文章帮我解决了这个问题:http://charlesleifer.com/blog/djangos-inlineformsetfactory-and-you/
还有一个解决方案可以使用基于类的视图:http://haineault.com/blog/155/
答案 1 :(得分:0)
我不确定这是一个很好的解决方案,但这是我能想到的唯一可行的解决方案。
我会创建一个词典列表。每个Dictionary都有一个baseForm键,它将保存你的B类表单和一个inline_forms键,它将保存你的A类inline_formset。
在您的视图代码中迭代列表并相应地打印表单。为每个表单提交按钮生成不同的值。 例如,对于第一种形式的submit_1,蚀刻..
提交表单时,请检查此值(提交按钮的值),如果值为例如submit_2,则表示您确定已提交列表的第二个项目/表单。 从他们可以开始处理提交的数据。