首页 > 解决方案 > 在表单中引用模型属性

问题描述

我希望在单个页面上同时编辑多个模型。我没有使用表单集,而是让它与我在视图中的模板中循环的表单数组一起工作:

{% extends 'app_base.html' %} {% block content %}
<p>{{message}}</p>
<form method="post">{% csrf_token %} {% for form in forms %}{{ form.as_p }}{% endfor %}
    <input type="submit" value="Submit" />
</form>
{% endblock %}

然而,烦人的是,我看不到我在输出中编辑的内容,因为它只是一堆没有标签的文本框。

因此,有什么方法可以在我循环时访问表单旁边的模型属性,例如:

{% for form in forms %}{{form.object.name}}: {{ form.as_p }}{% endfor %}

标签: pythondjangodjango-modelsdjango-formsdjango-templates

解决方案


如果您ModelForm对所有表单都使用 a,则需要使用正在更新的模型实例 ( MyForm(data=request.POST, instance=...)) 对其进行初始化。

您可以访问instance表单的 ,它只是表单上的一个属性:form.instance.

请注意,它始终存在于 上ModelForm,即使您instance在初始化时没有传递。在这种情况下,它是表单模型的初始化实例,而不是保存实例。所以form.instance.pk = None在那种情况下。


推荐阅读