在Django视图
问题描述:
我有两个模型在Django视图
结合modelformset和inlineformsetclass 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你确定第二个项目/形式您的列表已提交。 从他们你可以开始处理提交的数据。
答
一周前我一直在努力。我建议你开始使用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/
这意味着我需要10个表单提交10个提交按钮? – Asif 2012-08-13 08:30:26
是的,这就是你要求的吗?在一个页面上有多个表单。每个单独的表单都需要提交按钮,否则无法提交。 – 2012-08-13 08:36:09