Django:将我正在序列化的对象嵌套到序列化程序中?
Django: nest the object I'm serializing into the serializer?
我想要嵌套我正在序列化的对象。这就是我的意思:
我当前的 UserSerializer:
class UserSerializer(serializers.ModelSerializer):
posts = serializers.SerializerMethodField()
class Meta:
model = User
fields = ('__all__')
def get_posts(self, user):
posts = Posts.objects.get_posts_for_user(user=user)
return PostsSerializer(posts, many=True, context=self.context)
这是我的 PostsSerializer:
class PostsSerializer(serializers.ModelSerializer):
class Meta:
model = Posts
fields = ('__all__')
序列化的方式如下:
{ "name": "Bobby Busche",
"email": "Bobby@gmail.com",
"posts": [ {"from_user": "me", "message": "Hello World"},
{"from_user": "me", "message": "Bye bye"} ],
"username": "ilovemymomma"
}
但我希望用户像这样在键 "user" 内分组:
{ "user": { "name": "Bobby Busche",
"email": "Bobby@gmail.com",
"username": "ilovemymomma" }
"posts": [ {"from_user": "me", "message": "Hello World"},
{"from_user": "me", "message": "Bye bye"} ]
}
我需要一些关于执行此操作的最佳方法的指导。
您可以像 Rajesh 指出的那样制作自定义序列化程序。请注意,此序列化程序是 read-only.
class UserPostsSerializer(serializers.BaseSerializer):
def to_representation(self, instance):
posts = Posts.objects.get_posts_for_user(user=instance)
return {
'user': UserSerializer(instance).data,
'posts': PostSerialzer(posts, many=True).data
}
然后您需要从 UserSerializer 中删除帖子字段,这样帖子也不会嵌套在该字段中。
我想要嵌套我正在序列化的对象。这就是我的意思:
我当前的 UserSerializer:
class UserSerializer(serializers.ModelSerializer):
posts = serializers.SerializerMethodField()
class Meta:
model = User
fields = ('__all__')
def get_posts(self, user):
posts = Posts.objects.get_posts_for_user(user=user)
return PostsSerializer(posts, many=True, context=self.context)
这是我的 PostsSerializer:
class PostsSerializer(serializers.ModelSerializer):
class Meta:
model = Posts
fields = ('__all__')
序列化的方式如下:
{ "name": "Bobby Busche",
"email": "Bobby@gmail.com",
"posts": [ {"from_user": "me", "message": "Hello World"},
{"from_user": "me", "message": "Bye bye"} ],
"username": "ilovemymomma"
}
但我希望用户像这样在键 "user" 内分组:
{ "user": { "name": "Bobby Busche",
"email": "Bobby@gmail.com",
"username": "ilovemymomma" }
"posts": [ {"from_user": "me", "message": "Hello World"},
{"from_user": "me", "message": "Bye bye"} ]
}
我需要一些关于执行此操作的最佳方法的指导。
您可以像 Rajesh 指出的那样制作自定义序列化程序。请注意,此序列化程序是 read-only.
class UserPostsSerializer(serializers.BaseSerializer):
def to_representation(self, instance):
posts = Posts.objects.get_posts_for_user(user=instance)
return {
'user': UserSerializer(instance).data,
'posts': PostSerialzer(posts, many=True).data
}
然后您需要从 UserSerializer 中删除帖子字段,这样帖子也不会嵌套在该字段中。