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

标签 python django django-rest-framework

使用 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/

相关文章:

python - 在 Django 中处理静态文件

django - 无法实现django-rules授权

javascript - Django : How to access current logged in user's id in javascript?

python - 时间序列数据的滑动窗口训练/测试分割

Python:将方法作为函数参数传递时出现属性错误

python - 如何使syncdb显示完整的堆栈跟踪

django Rest框架 - 嵌套序列化不包括嵌套对象字段

python - 如何在qtdesigner中使用qss中的qrc资源?

python - 将函数从我的 django 方法中移出

django - 如何在某些模型管理员中禁用 mptt 的 TreeForeignKey 字段的 Select 小部件中的某些选项?