【发布时间】:2013-11-28 16:13:17
【问题描述】:
我在使用 Django 中的查询集时遇到了一些问题。不幸的是,我不能使用内置分页的 Django REST 框架,因为它添加了诸如“下一个”、“上一个”和“计数”之类的未处理的 JSON 字段,所以我想限制在查询集上使用 [: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],为什么会出现此错误,但既然我是在之后执行此操作,为什么会出现此错误?
谢谢, 标记
【问题讨论】:
标签: python django django-queryset