我在格式化Django Formset时遇到问题,我不知道最好的方法是什么......希望得到你经验丰富的反馈。
我有一个formset(SystemConfigurationFormset),它有一个带有以下两个字段的表单(SystemConfiguration):
我已经阅读了很多关于Formsets的内容,如果我有正确的方法,我仍然有点困惑。基本上,我想在同一个网页上重复同样的表格3次。单击“提交”应该唯一地提交三个表单中的所有数据(使用一些前缀来标识表单集的每个表单)。
问题是,我需要为每个表单分别标题。例如:
Form1-Name Form2-Name
-form-1-here- -form-2-here -
(彼此相邻的表格)
我将如何采用这种方法?现在,这是我讨厌的代码,我相信你可以告诉它是不正确的:
<div class="box-content">
<div class="row-fluid">
<form class="form-horizontal" action="" method="POST"> {% csrf_token %}
<div class="span3" onTablet="span6" onDesktop="span3">
{{ formset.management_form }}
<h2><b>Application VM</b></h2>
<fieldset>
{{ formset.form.as_table }}
</fieldset>
</div>
<div class="span3" onTablet="span6" onDesktop="span3">
<h2><b>Router VM</b></h2>
<fieldset>
{{ formset.form.as_table }}
</fieldset>
</div>
<div class="span3" onTablet="span6" onDesktop="span3">
<h2><b>System VM</b></h2>
<fieldset>
{{ formset.form.as_table }}
</fieldset>
</div>
</div>
<div class="form-actions">
<!-- <button type="submit" class="btn btn-primary">Save changes</button> -->
<button type="submit" class="btn btn-primary">Save</button>
<button type="reset" class="btn">Reset</button>
</div>
</form>
非常感谢您的帮助!
答案 0 :(得分:1)
这是一个解决方案,对表单的标题有一点黑客攻击。如果你想摆脱它,我建议在你的视图中使用python的zip函数来组合formset和标题列表。在answer中可以找到这样做的例子。
{{ formset.management_form }}
{% for form in formset %}
<div class="span3" onTablet="span6" onDesktop="span3">
<h2><b>
{% if forloop.counter == 1 %}
Application VM
{% elif forloop.counter == 2 %}
Router VM
{% elif forloop.counter == 3 %}
System VM
{% endif %}
</b></h2>
<fieldset>
{{ form.as_table }}
</fieldset>
</div>
{% endfor %}