为什么不管用? 我得到错误"Cannot filter a query once a slice has been taken." 我能做些什么来解决这个问题?

class LogbookLastViewSet(viewsets.ReadOnlyModelViewSet):
    serializer_class = LogbookSerializer
    permission_classes = [permissions.IsAuthenticated]
    filterset_fields = ['organizationID']
    
    def get_queryset(self):
        queryset = Logbook.objects.filter(organizationID='1111').order_by('-created')[:10]
        return queryset

我需要这样的东西:

SELECT * FROM logbook WHERE organizationID='1111' ORDER_BY created LIMIT 10;

推荐答案

这要归功于filterset_fields.这样的过滤将发生在.get_queryset(…) [drf-doc]after处,但由于您对get_queryset进行切分,因此不可能进行额外的过滤.

您可以改为在.paginate_queryset(…)中进行切片:

class LogbookLastViewSet(viewsets.ReadOnlyModelViewSet):
    serializer_class = LogbookSerializer
    permission_classes = [permissions.IsAuthenticated]
    filterset_fields = ['organizationID']
    queryset = Logbook.objects.all()

    def paginate_queryset(self, queryset):
        return queryset[:10]

Django相关问答推荐

如果密码在Django中未被散列,则对其进行散列

在Django中提交表单后更改模型数据

Django:作为模型中的列表元素的字段

如何在Django REST框架中实现ForeignKey搜索

当从 fastapi 发送请求时,Django 无法对 Postgres 执行查询

Django AWS S3对象存储boto3媒体上传报错

Django - 站点匹配查询不存在

我的 django 模板布尔变量在 javascript 中没有按预期工作

InvalidBasesError:无法解析 [] 的基础

Django 从字段开始

如何将 Django forms.ChoiceField 呈现为 Twitter Bootstrap 下拉菜单

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

Django:如何使用动态(非模型)数据预填充 FormView?

无效的块标签: static

Django 有 SmallIntegerField 的原因是什么?

Django:如何过滤属于特定组的用户

在 Django 开发服务器中关闭静态文件的缓存

Django:必须使用对象 pk 或 slug 调用通用详细视图

Django 测试客户端方法覆盖标头

ImportError:没有名为 django_filters 的模块