当我这样做时,
>>> b = Blog.objects.all()
>>> b
我明白了:
>>>[<Blog: Blog Title>,<Blog: Blog Tile>]
当我查询b
的类型时,
>>> type(b)
我明白了:
>>> <class 'django.db.models.query.QuerySet'>
这是什么意思?它是dict
,list
等数据类型吗?
我将赞赏如何构建像QuerySet
这样的数据结构的示例。
我想知道Django如何构建QuerySet
(血腥细节)。
答案 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。
答案 3 :(得分:0)
QuerySet是给定模型的对象列表,QuerySet允许您从数据库读取数据