使用Django REST Framework,我有2个序列化器:PageSerializerCommentSerializer
CommentSerializer依赖于一些额外的“上下文”值,但是它不能直接获取,而是需要从PageSerializer获取它,因为它们具有嵌套关系。

所以我需要有这样的东西:

class CommentSerializer(serializers.ModelSerializer):
    ...
    my_field = serializers.SerializerMethodField()

    def get_my_field(self, comment):
        my_value = self.context['my_value']
        ...

class PageSerializer(serializers.ModelSerializer):
    ...
    comments = CommentSerializer(
        many=True,
        context={'my_value': my_value} # my_value doesn't exist until __init__ is called, so I can't pass it
    )

...
my_value = 1
page_serializer = PageSerializer(page, context={'my_value': my_value})

但是,当然,此代码无法正常工作。
我在这里可以采取哪种解决方法?

最佳答案

当您像在序列化程序中一样定义关系时,序列化页面的注释时,PageSerializer的上下文将自动传递给CommentSerializer

因此,只需定义comments = CommentSerializer(many=True)即可。

关于python - 将上下文从一个串行器传递到另一个?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40845706/

10-12 03:56