Django教程中有这一行,100:

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

choice_set是如何产生的?它是什么?

我想choice部分是本教程中使用的Choice模型的小写版本,但choice_set是什么?你能详细说明一下吗?

UPDATE:根据Ben的答案,我找到了这个文档:101.

推荐答案

您在Choice上创建了一个外键,它将每个外键与Question关联.

因此,每个Choice显式地有一个question字段,这是您在模型中声明的.

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

choice_set是可以创建Choice个对象的查询集的RelatedManager,这些对象与Question实例有关,例如q.choice_set.all()

如果您不喜欢Django自动 Select 的foo_set命名,或者如果您对同一个模型有多个外键,并且需要区分它们,那么可以使用related_name参数到ForeignKey来 Select 您自己的替代名称.

Django相关问答推荐

查尔而不是瓦尔查尔加盟Django 球场

在保存新实例之前删除一个实例(Django模型保存方法)

Django Form初始值不在呈现上起作用

我希望用户能够预订相同的桌子,但不是在同一时间

Django没有';t显示黄页

Django基于查询集动态筛选字段名称

Django多对多关系报错:<title> object (None)>需要先设置id字段的值.

DJANGO 获得模型中发现的第一、第二和第三大价值

如何在 createsuperuser 中实例化表

如何在 Django 模型中存储元组列表

组织大型 Django 元素的指南

如何让 Django 在模板更改时重新启动运行服务器?

DeleteView 中的success_message 未显示

什么时候在 django rest 框架序列化程序中调用创建和更新?

如何在 django tests.py 中创建管理员用户

如何在 Django 测试框架中修改会话

创建新内容类型时出错.请确保在try 单独迁移应用程序之前迁移内容类型

get_or_create() 线程安全吗

Django 应用程序运行良好,但收到 TEMPLATE_* 警告消息

Django Admin - save_model 方法 - 如何检测字段是否已更改?