包含嵌套对象的序列化程序
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中已经很清楚了。
我正在尝试以 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中已经很清楚了。