Существует эта строка в учебном руководстве Django, Пишущий Ваше первое приложение Django, часть 1:
p.choice_set.create(choice='Not much', votes=0)
Как choice_set
порожденный и что это?
Я предполагаю choice
часть является строчной версией модели Choice
используемый в учебном руководстве, но что choice_set
? Можно ли уточнить?
ОБНОВЛЕНИЕ: На основе ответа Ben я определил местоположение этой документации: Следующие отношения "назад".
Вы создали внешний ключ на Варианте
, который связывает каждый из них с Вопросом
.
Итак, каждый вариант ответа
явно имеет поле вопрос
, которое вы объявили в модели.
ORM Django следует связи назад из Вопроса
, автоматически генерируя поле для каждого экземпляра с именем foo_set
, где Foo
- модель с Поле ForeignKey
для этой модели.
choice_set
- это RelatedManager
, который может создавать наборы запросов Choice
объектов, которые относятся к экземпляру Question
, например q.choice_set.all ()
Если вам не нравится имя foo_set
, которое Django выбирает автоматически, или если у вас более одного внешнего ключа для одной модели и вам нужно различать их, вы можете выбрать собственное переопределяющее имя, используя аргумент related_name
для ForeignKey
.