3

我有两个型号

   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 视图中的保存方法上结合模型表单集(模型 A)和内联表单集(mdoel B)?

4

2 回答 2

1

一周前我一直在努力解决这个问题。我建议您开始使用 inlineformset_factory 方法:https ://docs.djangoproject.com/en/dev/topics/forms/modelforms/

然后只需将您的基本表单和表单集添加到您的视图并呈现它们。

这是一些帮助我解决这个问题的博客文章:http ://charlesleifer.com/blog/djangos-inlineformsetfactory-and-you/

还有一个解决方案可以使用基于类的视图使其工作:http: //haineault.com/blog/155/

于 2012-08-13T07:14:39.517 回答
0

我不确定这是一个好的解决方案,但这是我能想出的唯一可行的解​​决方案。

我会创建一个字典列表。每个字典都有一个 baseForm 键来保存你的 B 类表单和一个 inline_forms 键来保存你的 A 类 inline_formset。

在您的视图中,代码遍历列表并相应地打印表单。为每个表单提交按钮生成不同的值。例如第一个表单的 submit_1 , etch ..

提交表单时,检查此值(提交按钮的值),如果该值是例如 submit_2,则您确定列表中的第二个项目/表单已提交。您可以从他们开始处理提交的数据。

于 2012-08-13T08:04:12.773 回答