繁体   English   中英

如何获得与 django rest 框架中的帖子相对应的评论?

[英]How can I get a comment that corresponds to a post in django rest framework?

我将制作一个 API,当我向路由器发送请求时,该 API 仅显示帖子中的评论,并将评论附加到帖子的 pk 值。 所以网址如下。 写完py和views.py后,发送请求,出现404错误。 如何通过编写 API 获得评论? 这是我制作的代码。

网址.py

urlpatterns = [
    path('post', CreateReadPostView.as_view({'post': 'create', 'get': 'list'})),
    path('post/<int:pk>', UpdateDeletePostView.as_view({'put': 'update', 'patch': 'partial_update', 'delete': 'destroy'})),
    path('post/<int:post.pk>/comments', CreateReadCommentView.as_view({'post': 'create', 'get': 'list'})),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

视图.py

class CreateReadCommentView (ModelViewSet) :
    serializer_class = CommentSerializer
    permission_classes = [IsAuthenticated]
    queryset = Comment.objects.all()

    def perform_create (self, serializer) :
        serializer.save(author=self.request.user)

您可以覆盖get_queryset()方法。

模型.py

class Post(models.Model):
    ...

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    ...

网址.py

urlpatterns = [
    ...
    path('post/<int:post_id>/comments', CreateReadCommentView.as_view({'post': 'create', 'get': 'list'})),
]

视图.py

class CreateReadCommentView (ModelViewSet):
    serializer_class = CommentSerializer
    permission_classes = [IsAuthenticated]
    queryset = Comment.objects.all()

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)

    def get_queryset(self):
        return super().get_queryset().filter(post=self.kwargs.get('post_id'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM