Django:将两个序列化程序添加到一起?

Django:将两个序列化程序添加到一起?,django,django-rest-framework,django-serializer,Django,Django Rest Framework,Django Serializer,如何在另一个序列化程序中添加序列化程序?我的意思是: 我有一个UserProfile模型: class UserProfile(models.Model): user = models.OneToOneField(User) photo = models.URLField(max_length=128) 我有来自用户的帖子: class Posts(models.Model): # ... post fields 我想用用户和照片以及该用户的帖子序列化我的UserP

如何在另一个序列化程序中添加序列化程序?我的意思是:

我有一个UserProfile模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    photo =  models.URLField(max_length=128)
我有来自用户的帖子:

class Posts(models.Model):
    # ... post fields
我想用用户和照片以及该用户的帖子序列化我的UserProfile。以下是我的目标:

{ "user": <User fields serialized>, 
  "photo": "www.example.com/path/to/file", 
  "posts": "[{"from_user": "me", "message": "post message} , 
             {"from_user": "me", "message": "post message2"}, ... etc],"
}
这是我的PostsSerializer.py:

class PostsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Posts
        fields = ('__all__')
class UserProfileSerializer(serializers.ModelSerializer):
    # somehow filter the results depending on User
    posts_serializer = PostsSerializer(many=True)
    class Meta:
        model = UserProfile
        fields = ('__all__')
这是我的UserSerializer.py:

class PostsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Posts
        fields = ('__all__')
class UserProfileSerializer(serializers.ModelSerializer):
    # somehow filter the results depending on User
    posts_serializer = PostsSerializer(many=True)
    class Meta:
        model = UserProfile
        fields = ('__all__')

我尝试序列化用户配置文件,因为我在我的
UserProfileSerializer
中添加了一个序列化器变量,所以我认为它会自动添加
posts
字段。它只显示序列化的用户档案器,完全忽略帖子。

尝试使用
SerializerMethodField
PostsSerializer
获取帖子,并手动将它们添加到
UserProfileSerializer
输出的“帖子”字段中,例如

class UserProfileSerializer
    ...
    posts = serializers.SerializerMethodField()

    class Meta:
        fields = ("posts", ... other fields, ...}

    def get_posts(self, user):
        posts = Posts.objects.get_posts_from_user(user)
        return PostsSerializer(posts, many=True, context=self.context).data

我只是从我的视图中调用
get_posts
吗?不,你只需序列化你的用户,它就会自动附加帖子。你介意帮我解决这个问题吗?这与这个问题有关。