Python Django Rest框架:如何在序列化程序响应中包含链接资源?

Python Django Rest框架:如何在序列化程序响应中包含链接资源?,python,django,django-rest-framework,Python,Django,Django Rest Framework,如果我自己编写一个视图集的实现,并且我想返回一些对象,那么它非常简单: class MyViewSet(ViewSet): def my_method(self, request): objects = MyModel.objects.all() return Response( MyModelSerializer(objects, many=True).data ) 但假设我想通过一个外键,而不仅仅是一个ID来包含另一个链接资源的实际实例。例如: class MyMode

如果我自己编写一个
视图集的实现,并且我想返回一些对象,那么它非常简单:

class MyViewSet(ViewSet):
  def my_method(self, request):
    objects = MyModel.objects.all()
    return Response( MyModelSerializer(objects, many=True).data )
但假设我想通过一个
外键
而不仅仅是一个ID来包含另一个链接资源的实际实例。例如:

class MyModel(Model):
  author = ForeignKey(MyOtherModel)
  ...
有没有办法做到这一点

...
return Response( MyModelSerializer(objects, many=True, include='author').data )
您可以在序列化程序上使用meta属性

class AccountSerializer(serializers.ModelSerializer):
    class Meta:
        model = Account
        fields = ('id', 'account_name', 'users', 'created')
        depth = 1
显式指定字段以控制其序列化方式

class AccountSerializer(serializers.ModelSerializer):
    url = serializers.CharField(source='get_absolute_url', read_only=True)
    groups = serializers.PrimaryKeyRelatedField(many=True)

    class Meta:
        model = Account 
您可以在序列化程序上使用meta属性

class AccountSerializer(serializers.ModelSerializer):
    class Meta:
        model = Account
        fields = ('id', 'account_name', 'users', 'created')
        depth = 1
显式指定字段以控制其序列化方式

class AccountSerializer(serializers.ModelSerializer):
    url = serializers.CharField(source='get_absolute_url', read_only=True)
    groups = serializers.PrimaryKeyRelatedField(many=True)

    class Meta:
        model = Account 

你要找的是。这是内置在Django REST框架中的。通过在序列化程序中显式定义关系字段,可以指定将展开相关对象的
many=True

从这个例子中

这可以返回:

{
    'album_name': 'The Grey Album',
    'artist': 'Danger Mouse',
    'tracks': [
        {'order': 1, 'title': 'Public Service Announcement', 'duration': 245},
        {'order': 2, 'title': 'What More Can I Say', 'duration': 264},
        {'order': 3, 'title': 'Encore', 'duration': 159},
        ...
    ],
}

你要找的是。这是内置在Django REST框架中的。通过在序列化程序中显式定义关系字段,可以指定将展开相关对象的
many=True

从这个例子中

这可以返回:

{
    'album_name': 'The Grey Album',
    'artist': 'Danger Mouse',
    'tracks': [
        {'order': 1, 'title': 'Public Service Announcement', 'duration': 245},
        {'order': 2, 'title': 'What More Can I Say', 'duration': 264},
        {'order': 3, 'title': 'Encore', 'duration': 159},
        ...
    ],
}