手动渲染 Django Formset

Render Django Formset Manually

当我使用循环渲染我的表单集时,一切正常。

当我尝试通过分别访问每个字段(用于前端目的)手动呈现它时,表单正在呈现但提交失败。每个字段都是相同的,所以我想在使用我不知道的表单集时创建了一个隐藏字段。

这里是我的工作代码的简化示例

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
{{ formset.management_form }}
{% for p in formset %}
    {{p.as_p}}
    {% endfor %}
</form>

以及不起作用的简化示例

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
{{ formset.management_form }}
{% for p in formset %}
<span class="form-sub-label-container " style="vertical-align:top">
                    {{p.field1}}
                    <label class="form-sub-label" for="input_12_city" id="sublabel_12_city" style="min-height:13px"></label>
                  </span>
    < span class="another_span">
    {{p.field2}}
 </span>
## etc....
    {% endfor %}
</form>

有什么想法吗?

谢谢。

如果你想手动渲染每个formset表单域,你必须添加Django默认的隐藏域。

<form method="post">
    {% csrf_token %}
    {{ formset.management_form }}
    {% for p in formset %}
        {{ p.id }} # if formset is ModelFormSet
        {{ p.ORDER }} # if can_order=True
        {{ p.DELETE }} # if can_delete=True
        ... # your custom fields
    {% endfor %}
</form>