我有一个问题,我认为非常基本,但我没有找到答案。 基于帖子django conditionally filtering objects
使用相同的例子:
user = User.objects.get(pk=1)
category = Category.objects.get(pk=1)
qs = Item.objects.filter(user=user, date=now())
if category:
qs = qs.filter(category=category)
当qs
变量检索结果时?
因为,如果行Item.objects.filter(user=user, date=now())
作为结果提供了100万条记录(在过滤类别之后),那些记录将被加载到内存中?或者查询是在render view
(或我将使用的任何方法)的同时检索信息?
答案 0 :(得分:0)
我建议您阅读有关retrieving objects
的官方Django文档Django QuerySet为lazy并在评估数据时执行
QuerySets是懒惰的 - 创建QuerySet的行为不涉及 任何数据库活动。你可以整天堆叠过滤器, 在QuerySet之前,Django实际上不会运行查询 评价。
例如,如果你这样做
print(qs)
您实际上将评估您的qs并触发数据库选择并将数据映射到QuerySet