首页 > 解决方案 > Django 查询集评估

问题描述

假设我有如下查询集。

queryset1 = Staff.objects.filter(user_id=self.request.user.id).values_list("department_id", flat=True)

如果我试图将查询集 1 传递给新的查询集,如下所示

queryset_form_1 = Department.objects.filter(pk__in=list(queryset1))
queryset_form_2 = Department.objects.filter(pk__in=queryset1)

正如我上面提到的,如果我eval使用它的 queryset1list(queryset1)获取预期的结果,但是如果我尝试在queryset_form_2其中获取所有记录,我犯了什么错误?

标签: pythondjangodjango-modelsdjango-querysetdjango-1.11

解决方案


Django QuerySet 是惰性的

所以你应该使用第一个,因为 list(queryset1) 强制评估一个惰性查询。你会得到你预期的结果。


推荐阅读