Django REST - 如何获取具有连接用户的对象

时间:2015-09-03 08:21:52

标签: python django django-rest-framework

我正在尝试在Django REST Framework中创建一个路由,以便我可以从与之相关的对象访问注释。

我的模型是CommentUserMarker,每个标记每个用户可以有一条评论。

我想要的是GET /comments/marker/{marker-pk}/的一种方式,它会返回已连接的用户留在该标记上的评论(如果有的话)。

现在我有GET /comments/{comment-pk}/这是默认设置,如果我在自定义方法上使用@detail_route装饰器,我只能访问注释但不能通过标记访问。

我的观点:

class CommentViewSet(viewsets.ModelViewSet):
    queryset = Comment.objects.all()
    serializer_class = MarkerCommentSerializer

1 个答案:

答案 0 :(得分:0)

所以我在写这个问题时想出了如何做到这一点。不确定它是非常惯用还是RESTful ......

我添加了一条新路线:

router.register(r'comments/marker', maps_views.CommentByMarkerViewSet, base_name="comments/marker")

新的ViewSet

class CommentByMarkerViewSet(viewsets.ModelViewSet):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer

    def retrieve(self, request, pk=None):
        comment = get_object_or_404(Comment, user=request.user, marker__pk=pk)
        serializer = self.get_serializer(comment)
        return Response(serializer.data)

现在我可以访问/comments/marker/{marker-pk}/上的评论。