Откуда берется 'article_set' в Django?
В настоящее время я работаю над приложением Django/Pinax (я уверен, что мой вопрос не относится к Pinax, поэтому Pinax не упоминается в названии темы), и я пытаюсь выяснить, как работает вся структура. Прямо сейчас я должен написать представление для передачи данных в шаблон. Я видел это только в руководстве по django: в руководстве ObjectName.objects.all() просто передается в render_to_response(). Моя задача несколько сложнее, поэтому я попытался понять, как она выполняется в "профилях" приложения pinax, и полностью провалилась.
Так, profile.html
Файл шаблона имеет следующую строку:
{% for article in other_user.article_set.all %}
"other_user" - это экземпляр класса "User", переданный в render_to_response () в views.py. Хорошо, но article_set не является переменной класса. Я не смог найти описание article_set где-либо в коде приложения, но обнаружил больше случаев появления чего-то похожего на ту же форму вызова:
{% for bookmark_instance in other_user.saved_bookmarks.all.select_related %}
Поиск в Django docs привел только к этой странице, не говоря точно, что такое "article_set".
Что такое article_set? Где это определено и как это работает? Любые ответы или просто ссылки на документацию настоятельно приветствуются. Спасибо.
2 ответа
Смотрите документацию о следовании "отсталым" отношениям.
Есть также несколько примеров.
Это искусственное поле, созданное ForeignKey
или же ManyToManyField
от Article
модель.