Python Django Rest-在get_***方法中包含序列化程序对象

Python Django Rest-在get_***方法中包含序列化程序对象,python,django,serialization,django-models,django-rest-framework,Python,Django,Serialization,Django Models,Django Rest Framework,我试图在另一个序列化程序的自定义对象中包含一个相关模型的序列化对象,但我不知道如何做到这一点 我有两个模型-snippet和user。代码段模型具有用户的外键。我需要的是在UserSerializer的“get_included”方法中包含snippet的序列化对象,并使UserSerializer返回如下JSON对象: { "id" : 1, "included": [ {'id': 2,'created': "20150729" }, {'id': 3,'

我试图在另一个序列化程序的自定义对象中包含一个相关模型的序列化对象,但我不知道如何做到这一点

我有两个模型-snippet和user。代码段模型具有用户的外键。我需要的是在UserSerializer的“get_included”方法中包含snippet的序列化对象,并使UserSerializer返回如下JSON对象:

{
   "id" : 1,
   "included": [
      {'id': 2,'created': "20150729" },
      {'id': 3,'created': "20150730" }, 
   ]
}
下面是我的代码

# Snippet Model
from django.db import models
class Snippet(models.Model):
   created = models.DateTimeField(auto_now_add=True)
   user = models.ForeignKey('auth.User', related_name='snippets')

# Snippet serializer
class SnippetSerializer(serializers.ModelSerializer):
   model = Snippet
   fields = ('id','created')

# User serializer
from .serializers import SnippetSerializer
class UserSerializer(serializers.ModelSerializer):
  included = serializers.SerilizerMethodField()
  class Meta: 
     model = User
     depth = 1 
     fields = ('id','included')

  def get_included(self, obj):
     snippets = SnippetSerializer(many=True, read_only=True).data

     return snippets

不需要
get\u include
方法。只需将
snippets
属性添加到类中即可

class UserSerializer(serializers.ModelSerializer):
    included = SnippetSerializer(many=True, read_only=True)

    class Meta: 
        model = User
        depth = 1 
        fields = ('id','included')

我遵循JSONAPI结构(),需要能够在“include”属性下包含相关模型的序列化对象。很抱歉我没有清楚地解释我的需求。您可以随意命名该属性,只需将
代码段序列化器
分配给它。有没有办法包含其他模型的多个序列化对象?像{“id”:1,“included”:[{“id”:2,“created”:“2015”,“type”:“snippet”},{“id”2,“created”:“2015”,“type”:“comment”}}要做到这一点,我认为您必须在视图中合并查询集,并创建一个多态序列化程序来处理多个类型。