Django,条件查询如何工作?

时间:2017-09-24 23:37:30

标签: python django

我有一个问题,我认为非常基本,但我没有找到答案。 基于帖子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(或我将使用的任何方法)的同时检索信息?

1 个答案:

答案 0 :(得分:0)

我建议您阅读有关retrieving objects

的官方Django文档

Django QuerySet为lazy并在评估数据时执行

  

QuerySets是懒惰的 - 创建QuerySet的行为不涉及   任何数据库活动。你可以整天堆叠过滤器,   在QuerySet之前,Django实际上不会运行查询   评价。

例如,如果你这样做

print(qs)

您实际上将评估您的qs并触发数据库选择并将数据映射到QuerySet