什么是Django QuerySet?

时间:2011-01-13 14:36:48

标签: django django-queryset

当我这样做时,

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

我明白了:

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

当我查询b的类型时,

>>> type(b)

我明白了:

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

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

我将赞赏如何构建像QuerySet这样的数据结构的示例。

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

4 个答案:

答案 0 :(得分:36)

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

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

答案 1 :(得分:15)

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

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