我遵循Django文档中的教程,并尝试使用模型和视图。我有一个Person
模型,它与其他人有多对多的关系,我称之为#34;朋友"。我想在我的数据库和他们的朋友中显示人员列表,所以我尝试了以下模板:
{% if people %}
<ul>
{% for p in people %}
<li>
{{ p.name }}
<ul>
{% for f in p.friends.all() %}
<li>
{{ f.name }}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% else %}
<p>There are no people.</p>
{% endif %}
Django告诉我它无法找到all()
方法。在一个疯狂的猜测中,我试图取消括号,留下如下{% for f in p.friends.all %}
行。令我惊讶的是,这确实有效,但我无法理解为什么。
我实际上是在调用该方法并将查询设置回来,还是会发生一些完全不同的事情?
答案 0 :(得分:0)
正如Victor Castillo Torres在评论中指出的那样,在Django模板中,您不会在方法调用中包含括号。只能调用没有参数的方法,并且不带括号调用这些方法。
Django文档中的更多细节: https://docs.djangoproject.com/en/dev/topics/templates/#variables