Rest Framework将额外的变量传递给ModelViewSet。

问题描述 投票:0回答:1

可能看起来像一个愚蠢的问题,但试图传递额外的过滤器变量到ModelViewSet,但request.data是空的。

class ObjViewSet(viewsets.ModelViewSet):
    def get_queryset(self):
        if self.request.get('orderBy', None):
            return Obj.objects.all().order_by(self.request.get('orderBy'))
        else:
            return Obj.objects.all()

正确的做法是什么?我不想把 /view/<id>/ 路由,但我还希望通过 /view/?orderBy=id&var2=val2

使用DefaultRouter

router.register('objs', views.ObjViewSet, basename="obj")
django django-rest-framework
1个回答
1
投票

你应该改变 self.request.get('orderBy') 变成 self.request.GET.get('orderBy')

class ObjViewSet(viewsets.ModelViewSet):
    queryset = Obj.objects.all()

    def get_queryset(self):
        order_by = self.request.GET.get('orderBy')
        if order_by is not None:
           return self.queryset.order_by(order_by)
        return self.queryset
© www.soinside.com 2019 - 2024. All rights reserved.