【问题标题】:clear limit on Django QuerySet明确限制 Django QuerySet
【发布时间】: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


【解决方案1】:

就像 Alasdair 所说,似乎没有记录在案的公共 API 来清除限制。可能是因为这不是一件很常见的事情。

无论如何,由于它没有在任何地方记录,我认为它是“内部的”,如有更改,恕不另行通知。

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2018-10-30
    • 2019-10-02
    • 2022-06-12
    • 2014-07-25
    相关资源
    最近更新 更多