Python 为什么我可以称之为;“全部”;我的ManyRelatedManager上没有括号的方法?(Django)
我正在遵循Django文档中的教程,并尝试使用模型和视图。我有一个Python 为什么我可以称之为;“全部”;我的ManyRelatedManager上没有括号的方法?(Django),python,django,many-to-many,Python,Django,Many To Many,我正在遵循Django文档中的教程,并尝试使用模型和视图。我有一个人模型,它与其他人有一种多对多的关系,我称之为“朋友”。我想显示数据库中的人员及其朋友的列表,因此我尝试了以下模板: {% if people %} <ul> {% for p in people %} <li> {{ p.name }} <ul> {% for f in p.friends.
人
模型,它与其他人有一种多对多的关系,我称之为“朋友”。我想显示数据库中的人员及其朋友的列表,因此我尝试了以下模板:
{% 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 %}
{%if people%}
{p在人员百分比中的百分比}
-
{{p.name}}
{p.friends.all()中f的%s%}
-
{{f.name}
{%endfor%}
{%endfor%}
{%else%}
没有人
{%endif%}
Django告诉我它找不到all()
方法。在一个疯狂的猜测中,我试图去掉括号,将行保留如下{%forf In p.friends.all%}
。令我惊讶的是,这确实有效,但我不明白为什么
我是否真的调用了该方法并得到了一个查询设置,还是发生了完全不同的事情?正如Victor Castillo Torres在评论中指出的那样,在Django模板中,方法调用中不包含括号。只有不带参数的方法才能调用,这些方法调用时不带括号 Django文档中的更多详细信息:
看看这个:这个啊,它把事情弄清楚了。非常感谢。