可能看起来像一个愚蠢的问题,但试图传递额外的过滤器变量到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")
你应该改变 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