python - 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
其中获取所有记录,我犯了什么错误?
解决方案
所以你应该使用第一个,因为 list(queryset1) 强制评估一个惰性查询。你会得到你预期的结果。
推荐阅读
- asp.net - Ninject 无法绑定 IRepository
- eclipse - 撤消和重做选项不会出现在应用程序中
- javascript - 为编辑器制作 Web 组件
- python - 将附加参数传递给 Pandas 自定义访问器
- mongodb - try..catch mongo shell 中的错误
- python - Pandas isin 在使用 concat 后遇到空 DF 时返回错误
- javascript - XMLHttpRequest OnReadyStateChange 未在 IE11 上返回正确状态
- java - 如何将 JTextArea 放在另一个 JTextArea 旁边?
- codenameone - 在启动画面期间获取背景位置
- python - 如何为 Pandas Dataframe 创建更多随机行?