gpt4 book ai didi

python - 查询集在获取切片后无法重新排序查询

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:23 25 4
gpt4 key购买 nike

我在 Django 中的查询集方面遇到了一些问题。不幸的是,我无法使用内置分页的 Django REST Framework,因为它添加了无用的 JSON 字段,例如“下一个”、“上一个”和“计数”,因此我想限制在查询集上使用 [:10] 选项。

在下面的尝试中,我收到错误:查询集在获取切片后无法对查询重新排序。

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] 会收到此错误,但既然我是在执行 order_by 之后执行的,为什么会出现此错误?

谢谢,标记

最佳答案

此错误是在 get_queryset 返回查询集后发生的,因为 LocationViewSet 具有“排序”属性,该属性会尝试再次对查询集重新排序。

关于python - 查询集在获取切片后无法重新排序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20270629/

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