Что такое choice_set в этом учебном руководстве по приложению Django?

Существует эта строка в учебном руководстве Django, Пишущий Ваше первое приложение Django, часть 1:

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

Как choice_set порожденный и что это?

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

ОБНОВЛЕНИЕ: На основе ответа Ben я определил местоположение этой документации: Следующие отношения "назад".

132
задан Peter Mortensen 27 October 2019 в 20:46
поделиться

1 ответ

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

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

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

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

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

152
ответ дан 24 November 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: