Django教程:什么是choice_set?

时间:2010-01-12 12:15:07

标签: django

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"

1 个答案:

答案 0 :(得分:143)

您在Choice上创建了一个外键,该外键将每个外键与Question相关联。

因此,每个Choice显式都有一个question字段,您在模型中声明了该字段。

Django的ORM也从Question向后跟踪关系,自动在每个名为foo_set的实例上生成一个字段,其中Foo是该模型的ForeignKey字段的模型

choice_setRelatedManager,可以创建与Choice个实例相关的Question个对象的查询集,例如q.choice_set.all()

如果您不喜欢Django自动选择的foo_set命名,或者您对同一模型有多个外键并需要区分它们,您可以使用{选择自己的覆盖名称{3}} ForeignKey的参数。