Django教程中有这一行, Writing your first Django app, part 1 :
p.choice_set.create(choice='Not much', votes=0)
choice_set
是如何存在的,它是什么?
我认为choice
部分是本教程中使用的模型Choice
的小写版本,但是choice_set
是什么?你能详细说明吗?
更新1 :根据Ben James'回答,我在文档中找到了一个位置: Following relationships "backward" 。
答案 0 :(得分:143)
您在Choice
上创建了一个外键,该外键将每个外键与Question
相关联。
因此,每个Choice
显式都有一个question
字段,您在模型中声明了该字段。
Django的ORM也从Question
向后跟踪关系,自动在每个名为foo_set
的实例上生成一个字段,其中Foo
是该模型的ForeignKey
字段的模型
choice_set
是RelatedManager
,可以创建与Choice
个实例相关的Question
个对象的查询集,例如q.choice_set.all()
如果您不喜欢Django自动选择的foo_set
命名,或者您对同一模型有多个外键并需要区分它们,您可以使用{选择自己的覆盖名称{3}} ForeignKey
的参数。