【发布时间】:2018-10-12 23:34:52
【问题描述】:
以下是我正在处理的项目的代码。正如您在视图中看到的,我正在对与 Url 中的主键关联的风险模型中的对象运行查询。
问题是我无法访问被查询对象的属性。
型号
class Risk(models.Model):
risk_title = models.CharField(max_length=60)
root_causes = models.ManyToManyField('self',
through='Roots',
symmetrical=False,
related_name='root_cause')
class Roots(models.Model):
causal_risk = models.ForeignKey(Risk, related_name='causes', on_delete=models.CASCADE)
effected_risk = models.ForeignKey(Risk, related_name='effected_risk', on_delete=models.CASCADE)
查看:
def view_risk(request, id):
try:
risk = Risk.objects.get(pk=id)
except Risk.DoesNotExist:
raise Http404("Risk does not exist")
roots = Roots.objects.filter(effected_risk=id)
args = {
'risk': risk,
'roots': roots,
}
return render(request, 'risks/risk_detail.html', args)
模板:
{% for root in roots %}
{{ root }}
{% endfor %}
运行上面的代码会返回:
Roots object (2) Roots object (3)
这应该是意料之中的,因为这些是我通过管理界面对模型所做的条目。
但是,当我运行时:
{% for root in roots %}
{{ root.risk_title }}
{% endfor %}
屏幕是空白的。
TLDR 将查询从中间表传递到模板有效,但模板无法访问对象属性。如何运行上述查询,然后访问模板中的对象?
已更新包含每个 JoJo 响应的渲染部分。此问题已在我的其他更新中得到解决。
提前谢谢你!
【问题讨论】:
-
请修正
view_risk中的缩进。另外,这个函数究竟返回了什么? -
完成。这是 Django 应用程序的基于函数的视图
标签: python django django-models django-templates django-views