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