在Django视图

问题描述:

我有两个模型在Django视图

结合modelformset和inlineformset
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视图中将保存方法结合modelformsets(model A)和inline formsets(mdoel B)?

我不知道这是一个很好的解决方案,但这是我能想出的唯一解决方案。

我会创建一个词典列表。每个字典将有一个baseForm键,它将保存你的B类形式和一个inline_forms键,它将保存你的类A inline_formset。

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

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

+0

这意味着我需要10个表单提交10个提交按钮? – Asif 2012-08-13 08:30:26

+0

是的,这就是你要求的吗?在一个页面上有多个表单。每个单独的表单都需要提交按钮,否则无法提交。 – 2012-08-13 08:36:09

一周前我一直在努力。我建议你开始使用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/

+0

我认为这些链接只会描述一个表单和相关的内联表单。但我希望通过ModelFormSet(来自模型A),其中每个窗体依次显示InlineFormSets(从模型B)连接到对象的所有对象 – Asif 2012-08-13 07:27:13

+0

所以你需要一个inlineformsets的formset。内联窗体的这些表单是固定的还是动态的? – 2012-08-13 07:31:34

+0

是的,它是动态的。我想modelformset为模型A,然后内联formsets每种形式modelformset – Asif 2012-08-13 07:37:55