繁体   English   中英

Django:如何使用 Modelviewset 进行 rest api 注释

[英]Django : how to make rest api comment with Modelviewset

我尝试使用Django的Modelviewset来实现评论功能,但是出现了问题。

模型 :

class Comment(models.Model):
    created = models.DateTimeField(auto_now_add= True)
    content = models.CharField(max_length = 255, null = True)
    author = models.ForeignKey(User, on_delete= models.CASCADE, null = True)
    writer =  models.CharField(max_length = 255, null = True)

    class Meta:
        abstract = True
        ordering = ['-id']

class TalkComment(Comment):
    title = "talk"
    post = models.ForeignKey(Talk, on_delete= models.CASCADE, null = True)

序列化程序:

class TalkCommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.TalkComment
        fields = '__all__'

看法 :

class TalkCommentViewset(viewsets.ModelViewSet):
    queryset = models.TalkComment.objects.all()
    serializer_class = serializers.TalkCommentSerializer

网址:

router.register(r'talk/(?P<id>\d+)/comment', postview.TalkCommentViewset)
/api/talk/2/comment/

我想要的只是从那篇文章中获得评论,但所有评论都来了。

如何从特定帖子中获取特定评论?

你让所有的评论,因为你初始化queryset返回所有commnents的。 要获得某个特定帖子的评论,您必须更改queryset 为此,您必须覆盖get_queryset方法(因为您需要从请求中获取post_id参数):

class TalkCommentViewset(viewsets.ModelViewSet):
    serializer_class = serializers.TalkCommentSerializer

    def get_queryset(self):
        post_id = self.kwargs["id"]
        queryset = TalkComment.objects.filter(post__id=post_id)
        return queryset

暂无
暂无

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

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