我有order_by()
模型django,并得到了以下结果queryset:
queryset = <QuerySet [<MyModel: MyModel object (4)>, <MyModel: MyModel object (2)>,
<MyModel: MyModel object (1)>, <MyModel: MyModel object (3)>, <MyModel: MyModel object (5)>]>
结果不按id排序。
我希望顺序为MyModel
和id greater than 1
的切片查询集获得以下结果:
new_queryset = <QuerySet [<MyModel: MyModel object (4)>, <MyModel: MyModel object (2)>]>
有没有像这样不带循环的切片方法来减少查询?
for index in range(len(queryset)):
if queryset[index].id == 1:
new_queryset = queryset[:index]
break
3条答案
按热度按时间eqoofvh91#
假设您正在基于
publish_datetime
和modified
对查询集进行排序,您可以简单地获取具有所需id的记录,并根据与对象相关的排序对查询集进行过滤,如下所示:您将获得在所需对象之前发布的帖子,或发布时间相同但修改日期较新的帖子的结果
4bbkushb2#
您可以使用
QuerySetManager
提供的filter
或exclude
函数。基本上您可以执行以下操作:rmbxnbpk3#
您可以对列表结果进行切片,如下所示:
5表示根据过滤后的查询集只显示5条记录。