博客五部曲之三 - 博客RESTful
1453 浏览 6 years
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
效果图如下
在详情视图里,最终我们也添加了这个方法。