【发布时间】:2016-04-01 06:17:06
【问题描述】:
在下面的函数中,我想只返回 200 个对象,无论是否应用了过滤器。
每当我尝试这样做时,我都会报错:Cannot filter a query once a slice has been taken.
def get_queryset(self):
queryset = Book.objects \
.select_related('user', 'category') \
.prefetch_related('likers') \
.all()
tag = self.request.query_params.get('tag', None)
if tag is not None:
queryset = queryset.filter(
Q(description__iexact='#{}'.format(tag)))
return queryset[:200]
有谁知道如何解决这个问题?
谢谢!
【问题讨论】:
-
你在这个查询集的某个地方还有另一个过滤器吗?
-
@doniyor 不。我对初始查询集进行了
select_related和prefetch_related调用,仅此而已。 -
可能会向我们展示整个列表视图将有助于调试
-
@doniyor 我刚刚编辑了帖子以显示整个功能
-
你能发布那个错误的回溯吗?
标签: django django-rest-framework django-queryset django-filter