使用 Django REST Framework,我有 2 个序列化器:PageSerializer
和 CommentSerializer
。
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/