Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获得与django rest框架中的帖子相对应的注释?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何获得与django rest框架中的帖子相对应的注释?

Python 如何获得与django rest框架中的帖子相对应的注释?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我将制作一个API,当我向路由器发送一个请求,并将注释附加到帖子的pk值时,它只显示帖子的注释。所以URL如下所示。在编写py和views.py之后,我发送了请求,出现了404错误。如何通过编写API获得注释?这是我写的代码 url.py urlpatterns = [ path('post', CreateReadPostView.as_view({'post': 'create', 'get': 'list'})), path('post/<int:pk>', U

我将制作一个API,当我向路由器发送一个请求,并将注释附加到帖子的pk值时,它只显示帖子的注释。所以URL如下所示。在编写py和views.py之后,我发送了请求,出现了404错误。如何通过编写API获得注释?这是我写的代码

url.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)

您可以重写
get\u queryset()
方法

型号.py

class Post(models.Model):
...
类注释(models.Model):
post=models.ForeignKey(post,on_delete=models.CASCADE)
...
url.py

urlpatterns=[
...
路径('post//comments',CreateReadCommentView.as_视图({'post':'create','get':'list'})),
]
视图.py

class CreateReadCommentView(ModelViewSet):
serializer\u class=CommentSerializer
权限\u类=[IsAuthenticated]
queryset=Comment.objects.all()
def执行_创建(自、序列化程序):
serializer.save(author=self.request.user)
def get_queryset(自我):
return super().get_queryset().filter(post=self.kwargs.get('post_id'))

您可以检查,因为您已经有了url结构,您可以只使用override
get\u queryset()
方法,而不使用
drf嵌套路由器
库。贴出了答案。
class CreateReadCommentView (ModelViewSet) :
    serializer_class = CommentSerializer
    permission_classes = [IsAuthenticated]
    queryset = Comment.objects.all()

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