为了账号安全,请及时绑定邮箱和手机立即绑定

如何获得与 django Rest Framework 中的帖子相对应的评论?

如何获得与 django Rest Framework 中的帖子相对应的评论?

凤凰求蛊 2023-09-12 17:21:21
我将创建一个 API,当我向路由器发送请求并将评论附加到帖子的 pk 值时,它只会显示帖子中的评论。所以网址如下。写完py和views.py后,发送请求,出现404错误。如何通过编写 API 来获取评论?这是我制作的代码。urls.pyurlpatterns = [    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)views.pyclass CreateReadCommentView (ModelViewSet) :    serializer_class = CommentSerializer    permission_classes = [IsAuthenticated]    queryset = Comment.objects.all()    def perform_create (self, serializer) :        serializer.save(author=self.request.user)
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您可以重写该get_queryset()方法。


models.py


class Post(models.Model):

    ...


class Comment(models.Model):

    post = models.ForeignKey(Post, on_delete=models.CASCADE)

    ...

urls.py


urlpatterns = [

    ...

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

]

views.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'))


查看完整回答
反对 回复 2023-09-12
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信