python切片排序_获取切片后,Queryset无法对查询重新排序

我在Django遇到了一些问题。不幸的是,我不能使用内置在分页中的Django REST框架,因为它添加了诸如“next”、“previous”和“count”之类的未经验证的JSON字段,所以我想限制在queryset上使用[:10]选项。在

在我下面的尝试中,我得到了一个错误:

Queryset Cannot reorder a query once a slice has been taken.class LocationsViewSet(viewsets.ReadOnlyModelViewSet):

serializer_class = serializers.LocationSerializer

ordering = ('location_name',)

def get_queryset(self):

queryset = models.GeonamesLocation.objects.all()

name_prefix = self.request.QUERY_PARAMS.get('name_prefix', None)

if name_prefix is not None:

if len(name_prefix) < 3:

raise exceptions.ParseError("'name_prefix' must consist of at least 2 characters")

queryset = queryset.filter(location_name__icontains = name_prefix).order_by('location_name', 'geonames_country', 'geonames_region')[:10]

return queryset

我理解为什么我在使用order-by之前应用了[:10],那么为什么会出现这个错误,但是既然我是在之后执行的,它为什么会给我这个错误呢?在

谢谢,

马克

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值