Django REST和ModelViewSet过滤

2024-10-01 13:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前使用的API视图如下:

在视图.py在

class AllProgramsApi(APIView):

    def get(self, request):
        user = self.request.user
        userprograms = Program.objects.filter(user=user)
        serializer = ProgramSerializer(userprograms, many=True)
        return Response(serializer.data)

这是我的模型:

^{pr2}$

现在我发现了ModelViewSet,它看起来非常方便,但是我似乎不能像以前在apieview中那样为用户过滤。在

我的尝试视图.pyModelViewSet如下所示,它可以工作,但我可以获得所有内容,而不仅仅是与单个用户相关的内容。在

class AllProgramsApi(ModelViewSet):
    serializer_class = ProgramSerializer
    queryset = Program.objects.all()

如何调整ModelViewSet,使其仅显示与发送请求的用户相关的内容?最好的方法是什么?在

谢谢。在


Tags: 用户self视图api内容objectsrequestprogram
2条回答

您可以使用getqueryset方法,如果您知道更多信息,请参阅docFiltering against the current user

class AllProgramsApi(ModelViewSet):
    serializer_class = ProgramSerializer
    queryset = Program.objects.all()
    def get_queryset(self):
        queryset = self.queryset
        query_set = queryset.filter(user=self.request.user)
        return query_set

django中有权限类,您可以根据需要添加权限,也可以创建自定义权限

你可以从django permission得到更好的主意

可以通过定义queryset或queryset来创建queryset。在

相关问题 更多 >