/ / Чому я можу назвати метод "все" у моєму "ManyRelatedManager" без дужок? (Джанго) - пітон, джанго, багато-багато-хто

Чому я можу назвати метод "все" у моєму "ManyRelatedManager" без дужок? (Джанго) - пітон, джанго, багато-багато-хто

Я підходжу до підручника у документації Джанго та експериментую з моделями та переглядами. У мене є Person модель, яка має взаємини багато хто з іншими особами, які я називаю "друзями". Я хотів показати список людей у ​​моїй базі даних та їхніх друзів, тому я спробував виконати наступний шаблон:

{% 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 %}

Джанго говорить мені, що він не може знайти all() метод У дикому припущенні я намагаюся забрати круглі дужки, залишаючи лінію наступним чином {% for f in p.friends.all %}. На мій подив, це насправді працює, але я не можу зрозуміти чому.

Чи я насправді називаю метод і отримую запит відновлено, чи відбувається щось зовсім інше?

Відповіді:

0 для відповіді № 1

Як зазначає Віктор Кастильо Торрес в aкоментар, у шаблонах Django ви не включаєте дужки у викликах методу. Можна викликати лише методи без параметрів, і вони називаються без дужок.

Додаткові подробиці в документації Django: https://docs.djangoproject.com/en/dev/topics/templates/#variables