python - 在表单中引用模型属性
问题描述
我希望在单个页面上同时编辑多个模型。我没有使用表单集,而是让它与我在视图中的模板中循环的表单数组一起工作:
{% 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 %}
解决方案
如果您ModelForm
对所有表单都使用 a,则需要使用正在更新的模型实例 ( MyForm(data=request.POST, instance=...)
) 对其进行初始化。
您可以访问instance
表单的 ,它只是表单上的一个属性:form.instance
.
请注意,它始终存在于 上ModelForm
,即使您instance
在初始化时没有传递。在这种情况下,它是表单模型的初始化实例,而不是保存实例。所以form.instance.pk = None
在那种情况下。
推荐阅读
- node.js - 如何将函数存储在 MongoDb 文档中,然后从那里读取并调用它?
- gimp - 像素区域比较
- spring - 值未显示到 Spring MVC 视图中
- javascript - 如何从另一个父道具获得道具?
- java - 升级 Java 和 Eclipse 版本
- c++ - 为什么该文件中的数据没有正确写入/读取?
- javascript - jQuery 库与内联脚本冲突
- javascript - NodeJS Express - GET/POST/PATCH/DELETE 在幕后的区别
- php - PHP Array from Database, set a row as Array title
- java - 我输入了正确的值,但打印了错误的值