gpt4 book ai didi

python - 单个django查询集获取n个相邻项目

转载 作者:行者123 更新时间:2023-11-28 19:17:16 25 4
gpt4 key购买 nike

我正在制作一个“无限”/连续滚动列表(如 twitter)并希望能够导航到特定项目。找到项目很简单,但我需要在它之前和之后得到一些项目。

我对此处建议的答案使用了类似的方法:Getting next and previous objects in Django

before = list(reversed(models.MyModel.objects.filter(pk__lt=pk).order_by('-pk')[:10]))
after = list(models.MyModel.objects.filter(pk__gte=pk).order_by('pk')[:11])
objects = before + after

有什么方法可以将这些组合到一个查询中吗?

我不能简单的用|操作符把两者结合起来,比如before |在 之后并且没有list/reverse,因为切片必须在前面。我也不能做像 pk__lt=pk+10, pk__gt=pk-10 这样的事情,因为对象可能会被删除。

举一个更复杂的例子,如果我按主键以外的东西排序,我需要先用另一个查询获取对象:

object = get_object_or_404(models.MyModel, pk=pk)
before = list(reversed(models.MyModel.objects.filter(pk__lt=object.other_key).order_by('-other_key')[:10]))
after = list(models.MyModel.objects.filter(pk__gte=object.other_key).order_by('other_key')[:11])
objects = before + after

同样,是否可以通过单个查询完成同样的事情?

最佳答案

我曾经遇到过类似的问题,解决方法described here :定义一个描述对象顺序的 SQL 变量,然后按此进行排序。但是,那是普通的 SQL。我不知道有没有办法使用 Django ORM。

关于python - 单个django查询集获取n个相邻项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32102245/

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