我对Django表单有一个问题,在我看来,绝对应该已经编写了一个解决方案。

我有几种不同的表单,它们以相同的 View 提交,例如...(很抱歉,现在仅使用伪代码)。

class Form1():
    #different attributes

class Form2()
    #different attributes
<html>
  <form>
    {{ 1-instance-Form1 }}
    {{ 2-instance-Form1 }}
    {{ 1-instance-Form2 }}
    {{ 2-instance-Form2 }}
  </form>
</html>

除此之外,我想让用户能够通过jquery添加其中一个表单类的表单实例,以便该表单可能成为
<html>
  <form>
    {{ 1-instance-Form1 }}
    {{ 2-instance-Form1 }}
    {{ 1-instance-Form2 }}
    {{ 2-instance-Form2 }}
    {{ 3-instance-Form2 }}
  </form>
</html>

现在,在寻找解决此类问题的解决方案时,我遇到了Django formset的概念,正如文档描述的那样,它是同一Form类的实例的集合。但是,正如我所看到的,表单集也可以处理异构表单:

某些定义已更改
class BaseHeterogenousFormSet(StrAndUnicode):

    def append(form):
    #add one more form to the formset

    def is_valid():
    #run is_valid for each of the forms in the formset

    def clean():
        #run the clean for each of the forms ...

我对这个问题的思考方式有问题吗?

最佳答案

您可以向同一 View 提交多个表单集,但需要避免名称冲突(https://docs.djangoproject.com/en/1.6/topics/forms/formsets/#using-more-than-one-formset-in-a-view)

一个表单集处理Form1的实例,另一个表单集处理Form2的实例。

10-08 05:41