博客五部曲之三 - 博客RESTful


1248 浏览 5 years, 2 months

17 子评论和回复数

版权声明: 转载请注明出处 http://www.codingsoho.com/

子评论和回复数

我们在评论详情视图里面添加子评论,添加额外方法 replies,它的内容是将当期评论所有的子评论序列化。

具体实现如下

class CommentDetailSerializer(serializers.ModelSerializer):
    replies = SerializerMethodField()
    class Meta:
        model = Comment
        fields = [
            "id",
            "content_type",
            "object_id",
            "content",
            "replies",
            "timestamp"
        ]
    def get_replies(self, obj):
        if obj.is_parent:
            return CommentChildSerializer(obj.children(), many=True).data
        return None

访问评论 http://127.0.0.1:8000/api/comments/34

效果图如下

在详情视图里,我们返回了所有的回复。接下来在根评论里面,我们添加以下评论回复的个数。

具体方法是添加一个序列化方法字段,名字为reply_count,值为所有子评论的个数。

添加一个序列化方法字段

class CommentSerializer(serializers.ModelSerializer):
    reply_count = SerializerMethodField()
    class Meta:
        model = Comment
        fields = [
            "id",
            "content_type",
            "object_id",
            "parent",
            "content",
            "reply_count"
        ]
    def get_reply_count(self, obj):
        if obj.is_parent:
            return obj.children().count()
        return 0

效果图如下

在详情视图里,最终我们也添加了这个方法。