【问题标题】:What is a Django QuerySet?什么是 Django 查询集?
【发布时间】:2011-06-08 13:08:58
【问题描述】:

当我这样做时,

>>> b = Blog.objects.all()
>>> b

我明白了:

>>>[<Blog: Blog Title>,<Blog: Blog Tile>]

当我查询b 是什么类型时,

>>> type(b)

我明白了:

>>> <class 'django.db.models.query.QuerySet'>

这是什么意思?是dictlist等数据类型吗?

我如何构建像QuerySet 这样的数据结构的示例将不胜感激。

我想知道 Django 如何构建 QuerySet(血淋淋的细节)。

【问题讨论】:

标签: django django-queryset


【解决方案1】:

django queryset 就像它的名字所说的那样,基本上是(sql)查询的集合,在您上面的示例中,print(b.query) 将向您显示从您的 django filter 调用生成的 sql 查询。

由于查询集是lazy,因此数据库查询不会立即完成,而是仅在需要时完成 - 当查询集被评估。例如,如果您在打印它时调用它的 __str__ 方法,如果您要在其上调用 list(),或者大多数情况下,您迭代它 (for post in b..),就会发生这种情况。这种惰性应该可以让您免于执行不必要的查询,并且还允许您链接查询集和过滤器(例如,您可以根据需要随时过滤查询集)。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 仅链接答案?这应该是一个很大的禁忌……
    【解决方案3】:

    QuerySet 代表数据库中对象的集合。它可以有零个、一个或多个过滤器。过滤器根据给定的参数缩小查询结果的范围。在 SQL 术语中,QuerySet 等同于 SELECT 语句,过滤器是限制子句,例如 WHERE 或 LIMIT。

    https://docs.djangoproject.com/en/1.8/topics/db/queries/

    【讨论】:

      【解决方案4】:

      QuerySet 是给定模型的对象列表,QuerySet 允许您从数据库中读取数据

      【讨论】:

        猜你喜欢
        • 2018-10-05
        • 2018-09-23
        • 2012-09-18
        • 2020-10-26
        • 2017-01-12
        • 2012-04-26
        • 2017-12-26
        • 2019-06-14
        • 2021-12-30
        相关资源
        最近更新 更多