_在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

我对如何在Django的
查询集中使用
\u set
有点困惑。例如,对象Blog
b
,以及由属性
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