Что такое choice_set в учебном пособии по Django? - PullRequest
126 голосов
/ 12 января 2010

В руководстве по Django есть эта строка, Написание вашего первого приложения Django, часть 1 :

p.choice_set.create(choice='Not much', votes=0)

Как choice_set вызывается к существованию и что это?

Я полагаю, что часть choice является строчной версией модели Choice, использованной в руководстве, но что такое choice_set? Можете ли вы уточнить?

ОБНОВЛЕНИЕ: Основываясь на ответе Бен , я нашел эту документацию: Следующие отношения "назад" .

1 Ответ

145 голосов
/ 12 января 2010

Вы создали внешний ключ на Choice, который связывает каждый ключ с Question.

Итак, каждое Choice явно имеет поле question, которое вы объявили в модели.

ORM Джанго также следует за отношением в обратном направлении от Question, автоматически генерируя поле для каждого экземпляра с именем foo_set, где Foo - это модель с полем ForeignKey для этой модели.

choice_set - это RelatedManager, который может создавать наборы запросов из объектов Choice, которые относятся к экземпляру Question, например, q.choice_set.all()

Если вам не нравится название foo_set, которое Django выбирает автоматически, или если у вас есть несколько внешних ключей для одной и той же модели и вам необходимо различать их, вы можете выбрать собственное переопределенное имя, используя related_name аргумент ForeignKey.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...