【发布时间】:2014-07-13 11:16:56
【问题描述】:
我喜欢 Django 表单库,但如果表单可以包含表单就更好了。
我的梦想是这样的:
- 我有一个行为类似于正常形式的表单:例如一个名为
SuperForm的类 -
SuperForm可以包含几种范式,甚至(递归)SuperForms - 您可以将其绑定到数据(使其绑定),调用
is_valid()...
这可以通过 django 或外部应用程序实现吗?
更新
我看到很多人不明白我想要什么。我的错,我没有给出用例。
用例:一个页面应该允许用户更新他的电子邮件和他的电话号码。电子邮件来自 django.contrib.auth,电话号码来自我们的自定义模型。
两个输入都应该在一个 <form> 标记中。由于ModelForm 好用,我不想自己手动创建表单。
我想要一个包含 django.contrib.auth.models.User 的 ModelForm 和我们自定义模型的 ModelForm 的容器。
我不想自己循环遍历这两种表单(在其他用例中可能有更多表单),并检查它们是否有效。
如果我在容器上调用is_valid() 或save(),则会调用表单的匹配方法。
【问题讨论】:
-
对此问题投反对票的尊敬的用户:请告诉我您为什么不喜欢它,以及如何改进它。谢谢。
-
我不确定您是否了解表单的工作原理。你看过 Formsets 的文档吗? docs.djangoproject.com/en/1.6/topics/forms/formsets
-
@Johndt6 Formsets 只能 N 次同一个表单类。我想要 N 种不同的形式和递归。 AFAIK Formsets 无法做到这一点。如果我错了,请告诉我。
-
您是否希望一个表单类包含多个可调用的表单?或者您是否正在考虑使用不同选项即时生成的类?
-
我相信这是可能的(尽管它会令人困惑并且需要大量工作)。但是你为什么不想这样做呢?您希望解决什么问题,因为可能有更简单的方法。
标签: python django forms recursion django-forms