dus*_*ual 6 python django django-forms
我有一个Django表格的问题,在我看来应该已经有一个已经编写的解决方案.
我有几个不同的表单在同一个视图中提交的东西像...(抱歉现在只使用伪代码)..
class Form1():
#different attributes
class Form2()
#different attributes
Run Code Online (Sandbox Code Playgroud)
<html>
<form>
{{ 1-instance-Form1 }}
{{ 2-instance-Form1 }}
{{ 1-instance-Form2 }}
{{ 2-instance-Form2 }}
</form>
</html>
Run Code Online (Sandbox Code Playgroud)
除此之外,我想让用户能够通过jquery添加一个表单类的表单实例,这样表单可能会变成
<html>
<form>
{{ 1-instance-Form1 }}
{{ 2-instance-Form1 }}
{{ 1-instance-Form2 }}
{{ 2-instance-Form2 }}
{{ 3-instance-Form2 }}
</form>
</html>
Run Code Online (Sandbox Code Playgroud)
现在在寻找解决这个问题的方法时,我遇到了Django formset的概念,正如文档描述的那样,它是同一Form类的实例的集合.但是我可以看到formsets也可以处理异构表单:
一些定义改变了
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 ...
Run Code Online (Sandbox Code Playgroud)
我正在考虑这个问题的方式有什么问题吗?
您可以向同一视图提交多个formset,但是您需要避免名称冲突(https://docs.djangoproject.com/en/1.6/topics/forms/formsets/#using-more-than-one-formset在一个视图)
一个formset处理Form1的实例,另一个formset处理Form2的实例.