Django Rest Framework嵌套对象响应 [英] Django Rest Framework nested object response
问题描述
我是Django Rest Framework的新手,我正在尝试实现Comment System API, 我有这样的模型
I am new to Django Rest Framework, I am trying to implement Comment System API, I have model like this
class Comment(models.Model):
parent_id = models.IntegerField()
user = models.ForeignKey(User)
content = models.CharField(max_length=1000,blank=True)
likes = models.IntegerField(default=0)
active = models.BooleanField(default=True)
created = models.DateTimeField(auto_now=False,auto_now_add=True)
updated = models.DateTimeField(auto_now=True,auto_now_add=False)
其中parent_id用于答复,如果Parent_id大于0,则表示当前评论是对其他评论的答复.现在,我想使用Django Rest Framework具有这样的json响应:
where parent_id is used for replies, if Parent_id is greater than 0 that means current comment is reply to some other comment. Now I want to use Django Rest Framework to have json response like this :
[ { "id":10, "parent_id":0, "content":测试注释", 喜欢":1, 回复:[{"id":11, "parent_id":10, "content":回复1条测试评论", 喜欢":1, } {"id":12, "parent_id":10, "content":回复2个测试评论", 喜欢":1, }]
[ { "id": 10, "parent_id": 0, "content": "Test Comment", "likes": 1, replies : [ { "id": 11, "parent_id": 10, "content": " Reply 1 Test Comment", "likes": 1, } { "id": 12, "parent_id": 10, "content": " Reply 2 Test Comment", "likes": 1, } ]
一些伙伴可以帮助我做出这样的反应吗? 我正在使用Django 1.7.6和Django Rest Framework 3.1.1
Can some buddy help me how to make such response ? I am using Django 1.7.6 and Django Rest Framework 3.1.1
推荐答案
我假设您拥有这样的Replies
模型:
I assumed you have the Replies
model like this:
class Replies(models.Model):
comment = Models.Foreignkey(Comment)
content = models.CharField(max_length=1000,blank=True)
likes = models.IntegerField(default=0)
然后,您可以使用rest_framework.serializers.ModelSerializer
类( http://www.django-rest-framework.org/api-guide/serializers/#modelserializer ):
Then you could use rest_framework.serializers.ModelSerializer
class (http://www.django-rest-framework.org/api-guide/serializers/#modelserializer):
from rest_framework import serializers
class RepliesSerializer(serializers.ModelSerializer):
class Meta:
model = Replies
fields = ('id', 'content', 'parent_id', 'likes')
parent_id = serializers.Field(source='comment.parent_id')
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = ('id', 'parent_id', 'content', 'likes', 'replies')
replies = RepliesSerializer(many=True)
这篇关于Django Rest Framework嵌套对象响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!