【发布时间】:2018-07-12 01:35:51
【问题描述】:
可以通过执行以下操作来限制 QuerySet 上的结果:
qs = MyModel.objects.all()[:3]
由于 QuerySet 通常被延迟评估,是否可以在迭代之前从 qs 中删除此限制?
我希望有像qs = qs[:] 或qs = qs[0:] 这样的直截了当的东西,但都没有。到目前为止,我唯一可以开始工作的是qs.query.clear_limits(),但我不确定这是否是公共 API 的一部分(我不得不翻阅 Django 源代码才能找到它)。
【问题讨论】:
-
clear_limits()的好发现。我不知道有一个公共 API 可以做到这一点。也许应该有一个 - 其他一些查询集方法有“重置”的方法,例如.order_by()和select_related(None). -
当然,
clear_limits是公共 API 的一部分,我已经使用过它可能多次,并且可以很好地满足我的需求
标签: python django django-queryset