Django教程:什么是choice_set?
在Django教程中有这样一行, 编写你的第一个Django应用程序,第1部分 :
p.choice_set.create(choice='Not much', votes=0)
choice_set
是如何被存在的,它是什么?
我猜想choice
部分是本教程中使用的模型Choice
的小写版本,但是choice_set
是choice_set
? 你能详细点吗?
更新1 :根据本詹姆斯的回答,我在描述的文档中find了一个地方: 关系“落后” 。
您在Choice
上创build了一个外键,将每个关联到一个Question
。
所以,每个Choice
明确地有一个question
字段,在模型中声明。
Django的ORM也跟从Question
的关系,在每个实例上自动生成一个名为foo_set
的字段,其中Foo
是具有该模型的ForeignKey
字段的模型。
choice_set
是RelatedManager
,它可以创build与Question
实例相关的Choice
对象的查询集,例如q.choice_set.all()
如果你不喜欢Django自动select的foo_set
命名,或者如果你有多个外键给同一个模型并且需要区分它们,你可以使用ForeignKey
的related_name
参数来select你自己的覆盖名。