[英]How can I get a comment that corresponds to a post in django rest framework?
I'm going to make an API that only brings up comments from the post when I send a request to the router with comments attached to the pk value of the post.我将制作一个 API,当我向路由器发送请求时,该 API 仅显示帖子中的评论,并将评论附加到帖子的 pk 值。 So urls as follows.所以网址如下。 After writing py and views.py, I sent the request and 404 error occurred.写完py和views.py后,发送请求,出现404错误。 How can I get comments by composing an API?如何通过编写 API 获得评论? Here's the code I made.这是我制作的代码。
urls.py网址.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)
views.py视图.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)
You can override the get_queryset()
method.您可以覆盖get_queryset()
方法。
models.py模型.py
class Post(models.Model):
...
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
...
urls.py网址.py
urlpatterns = [
...
path('post/<int:post_id>/comments', CreateReadCommentView.as_view({'post': 'create', 'get': 'list'})),
]
views.py视图.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.