Django Rest Framework嵌套对象响应 [英] Django Rest Framework nested object response

查看:116
本文介绍了Django Rest Framework嵌套对象响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆