Django queryset评估

时间:2018-11-18 06:35:31

标签: python django django-models django-queryset django-1.11

让我说我有如下的queryset。

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

如果我尝试将queryset 1传递给如下所示的新queryset

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

如上所述,如果我将evallist(queryset1)一起使用queryset1,它将获取预期的结果,但是如果我尝试在queryset_form_2中,它将获取所有记录,那么我犯了什么错误?

1 个答案:

答案 0 :(得分:0)

Django QuerySet is lazy

因此,您应该使用第一个,因为list(queryset1)强制评估一个惰性查询。这样您将获得预期的结果。