如何解决Django:如何在不丢失<p>或任何其他元素中的每个字段的情况下呈现表单集而又不丢失管理表单?
我通过以下方式渲染模型表单集:
<form method="POST" class="note-form">
{{ formset.management_data }}
{% csrf_token %}
{{ formset.as_p}}
<input type="submit" value="Save">
</form>
但是,这会在<p>
元素中以每种形式呈现每个字段,这是我不想要的。它的包装是这样的:
<form method="POST" class="note-form">
<input type="hidden" name="csrfmiddlewaretoken"...>
<input type="hidden" name="form-TOTAL-FORMS"...>
<input type="hidden" name="form-INITIAL-FORMS"...>
<input type="hidden" name="form-MIN-NUM-FORMS"...>
<input type="hidden" name="form-MAX-NUM-FORMS"...>
<p>
<textarea ...></textarea>
</p>
<p>
<input ...>
</p>
<p>
<input ...>
</p>
<p>
<textarea ...></textarea>
</p>
...and so on...
</form>
相反,我想要可以这样渲染的东西
<form method="POST" class="note-form">
<input type="hidden" name="csrfmiddlewaretoken"...>
<input type="hidden" name="form-TOTAL-FORMS"...>
<input type="hidden" name="form-INITIAL-FORMS"...>
<input type="hidden" name="form-MIN-NUM-FORMS"...>
<input type="hidden" name="form-MAX-NUM-FORMS"...>
<div ...>
<textarea ...></textarea>
<input ...>
<input ...>
</div>
<div ...>
<textarea ...></textarea>
<input ...>
<input ...>
</div>
....and so on....
即div元素中的每个表单。现在,我尝试执行以下操作
<form method="POST" class="note-form">
{{ formset.management_data }}
{% csrf_token %}
{% for form in formset %}
<div>
{{ form }}
</div>
{% endfor %}
<input type="submit" value="Save">
</form>
这将以我想要的方式呈现表单集。问题在于,当我这样做时,管理数据会消失,并且会收到错误消息“ ManagementForm数据丢失或已被篡改”。
我发现了一些与in the documentation类似的东西,但仍然对我不起作用。我在做什么错了?
解决方法
尝试:
<table>
{{ formset.as_table }}
</table>
,
很显然,如果未使用{{ formset.as_p }}
,{{ formset.as_table }}
或类似形式呈现表单集,则不会自动呈现管理数据。它必须手动呈现。
{{ formset.management_data }}
{% csrf_token %}
<div class="notes-pane">
{{ formset.management_form }}
{% for form in formset %}
<div>
{{ form }}
</div>
{% endfor %}
<input type="submit" value="Save">
</div>
</form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。