【发布时间】:2025-12-13 04:45:01
【问题描述】:
在 Django REST 框架中,提供额外的 args/kwargs 以设置不是通过 request.data 设置的字段值,而是通过 url 参数或 cookie 中的值,这是 Django REST 框架中的一项非常标准的任务。例如,我需要在 POST 请求时将我的 Comment 模型的 user 字段设置为等于 request.user。这些额外的参数称为上下文。
* 上的几个问题(1、2)建议我覆盖我的ModelViewSet 的get_serializer_context() 方法。我做到了,但没有帮助。我试图理解,出了什么问题,并从源代码中发现我不明白这个上下文系统应该如何工作。 (也缺少有关此问题的文档)
谁能解释一下,序列化程序在哪里将上下文添加到正常的请求数据中?我找到了两个地方,它保存了上下文中的值。
- serializer.save(),方法,将 kwargs 与经过验证的数据混合在一起,但通常在没有参数的情况下调用它(例如,ModelMixins)。
-
fields.
__new__(),它缓存了 args 和 kwargs,但似乎没有人以后再阅读它们。
【问题讨论】: