包含嵌套对象的序列化程序

Serializer containing nested objects

我正在尝试以 returns 包含所有 friendship_creator 和 friendship_friend 字段(名字、姓氏、电子邮件)的友谊对象的方式编写序列化程序,而不仅仅是 ID .

用户模型是默认的auth.user模型,友谊模型如下所示:

class Friendship(models.Model):
        creator = models.ForeignKey('auth.user', related_name = 'friendship_creator')
        friend = models.ForeignKey('auth.user', related_name = 'friendship_friend')
        status = models.IntegerField()
        created = models.DateTimeField(auto_now_add = True)

serializers.py

class FriendshipSerializer(serializers.ModelSerializer):

        class Meta:
                model = Friendship

当前响应对象:

{
        "id": 2,
        "status": 2,
        "created": "2015-05-03T17:33:05.027652Z",
        "creator": 3,
        "friend": 4
}

我希望 "creator" 和 "friend" 包含整个用户对象

您需要为用户模型实现序列化程序。说 UserSerializer:

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User

然后在 FriendshipSerializer 上显式声明 'creator' 和 'friend' 属性,分配 UserSerializer 的实例:

class FriendshipSerializer(serializers.ModelSerializer):
    creator = UserSerializer()
    friend = UserSerializer()

    class Meta:
            model = Friendship

the docs中已经很清楚了。