gpt4 book ai didi

python - Django,在某个id之前查询对象

转载 作者:行者123 更新时间:2023-11-30 22:18:43 25 4
gpt4 key购买 nike

我遇到了一个有趣的问题

假设我的数据库中有这样的对象:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

让我们将数字视为这些对象的 ID

如果我想在5之后获取两个对象,我需要使用这个查询:

MyObject.objects.filter(id__gt=5).order_by("id")[:2]

这将返回给我这个结果:

[6, 7]

哪个是正确的结果。

现在我想在对象 5 之前获取两个对象。我执行此查询:

MyObject.objects.filter(id__lt=5).order_by("id")[:2]

但是,这给我带来了这样的结果:

[1, 2] instead of [3, 4]

所以我需要从id=5的对象开始查询对象

我知道有范围查询,但它不适合仅使用 id 时。

是否可以从该对象本身开始查询某个id之前的对象?

========更新========

有一个问题,有时对象也会被另一个条件过滤,这意味着 id 与其索引不相关:

[34, 45, 46, 66, 100, 105, 211]

如何获取两个对象,例如在 66 之前?

最佳答案

按降序排列

MyObject.objects.filter(id__lt=5).order_by("-id")[:2]

您将得到 2 个最接近 5 的数字


如果您希望永远不会删除数据,那么您可以使用 range (之间)

MyObject.objects.filter(id__range=(4, 3))

关于python - Django,在某个id之前查询对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com