_在Django中设置查询集
我对如何在Django的_在Django中设置查询集,django,django-queryset,Django,Django Queryset,我对如何在Django的查询集中使用\u set有点困惑。例如,对象Blogb,以及由属性Entry\u set关联的对象Entry。b.entry\u set.all()的含义是什么 如果有人能使用此示例显示可能的输出,我将不胜感激。您看到的是一个示例 在您的示例中: class Blog(models.Model): pass class Entry(..): blog = Blog(..) 现在,给定类型为Entry的对象e,您可以执行e.blog来访问相关对象blog
查询集中使用\u set
有点困惑。例如,对象Blogb
,以及由属性Entry\u set
关联的对象Entry
。b.entry\u set.all()的含义是什么
如果有人能使用此示例显示可能的输出,我将不胜感激。您看到的是一个示例
在您的示例中:
class Blog(models.Model):
pass
class Entry(..):
blog = Blog(..)
现在,给定类型为Entry
的对象e
,您可以执行e.blog
来访问相关对象blog
——这是一种正向关系。
\u set
是django为您输入的反向查找类变量
因此,给定对象b
,您将执行以下操作:
entries = b.entry_set.all()
反向是查询集的原因是,ForeignKey是一对多关系。因此,反面是查询集
\u set
对象在以下情况下可用 简而言之:
假设您有一辆车型汽车
和一个车型车轮
<代码>车轮
与汽车
具有外键关系,如下所示:
class Car(models.Model):
pass
class Wheel(models.Model):
car = models.ForeignKey(Car, on_delete=models.CASCADE) # on_delete parameter is mandatory in Django 2.0
假设w
是Wheel
的一个实例,c
是Car
的一个实例:
>>> w.car # returns the related Car object to w
>>> c.wheel_set.all() # returns all Wheel objects related to c
详细说明
使用上面定义的模型,Wheel
对象w
可以通过访问Car
属性:w.Car
来获取其关联的Car
对象
如果模型具有外键
,则该模型的实例将通过模型的简单属性访问相关的外部对象
据这位官员说:
Django还为关系的“另一方”(从相关模型到定义关系的模型的链接)创建API访问器
在这种情况下,Car
对象c
可以通过Wheel\u set
属性:c.Wheel\u set.all()
访问所有相关Wheel
对象的列表
如果模型具有外键
,则外键模型的实例将可以访问返回第一个模型的所有实例的管理器
。默认情况下,此管理器
命名为FOO_set
,其中FOO
是源模型名称,小写。这个管理器
返回查询集
,可以对其进行过滤和操作。我们不能只说entries=b.entry.all(),如果这样做会发生什么。只是想了解“set”的作用?你读过解释了吗?你也看过这个链接了吗?读了几遍。我猜单词“_set”实际上并没有设置任何东西,而是“获取”所有相关对象。这就是我对它的理解。想想queryset中的set,而不是Getter和Setter。为什么它是wheel\u set
而不是wheel\u set
?为什么不区分大小写?@DevanshSharma,这是因为在字段声明中未指定相关名称时,这是默认行为。它使用\u集合
作为相关名称
()的默认值。您可以看到类的名称是小写的,因此它不是Wheel\u set
。