将上下文从一个序列化程序传递到另一个

时间:2016-11-28 13:40:26

标签: python django django-rest-framework

使用Django REST Framework,我有2个序列化器:CommentSerializerCommentSerializer

PageSerializer取决于一些额外的" context"值,但它没有直接获取它,而是需要从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}) 获取它,因为它们具有嵌套关系。

所以我需要这样的东西:

submission_controller.rb

但是,当然,这段代码无法正常工作 我可以在这做什么样的解决方法?

1 个答案:

答案 0 :(得分:2)

当你在序列化工具中定义关系时,PageSerializer的上下文会在页面的评论被序列化时自动传递给CommentSerializer

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