修复 ManagementForm 数据

Fixing ManagementForm-data

我有一些代码如下所示:

<table>
    {% for n in model %}
        {% for i in formset.forms %}
            {% if forloop.parentloop.counter == forloop.counter %}
                <tr>
                <th>{{ n }}</th>
                {% for j in i %}
                    <th>{{ j }}</th>
                {% endfor %}
                </tr>
            {% endif %}
        {% endfor %}
    {% endfor %}
</table>

我真的很想保持这种状态,因为这是我被要求的演示文稿。但是,我不断收到 "ManagementForm-data missing or tampered with" 错误,显然是因为我弄乱了表单集。

是否有修复 managementform-data 的聪明方法,以便我的 POST 能够通过,或者我是否必须完全重新格式化我的模板?

(是的,我知道我的代码包含丑陋、低效的 hack。请随时提出替代方案,但性能并不重要。)

您收到有关缺少管理表单数据的错误,因为您没有将管理表单包含在 {{ formset.management_form }} 中。有关详细信息,请参阅 the docs

为了防止模板中的双循环,您可以在视图中压缩 modelformset.forms

models_and_forms = zip(model, formset.forms)

然后遍历模板中的models_and_forms

<table>
    {{ formset.management_form }}
    {% for n, i in models_and_forms %}
        <tr>
            <th>{{ n }}</th>
            {% for j in i %}
                <th>{{ j }}</th>
            {% endfor %}
        </tr>
    {% endfor %}
</table>