0

我想序列化/反序列化没有固定键的对象。

我知道为此目的有 DictField 。

但是,由于这是一个字段,而不是序列化程序,我需要一个序列化程序,将 dictfield 包装为根对象的键。

这意味着,使用 DictField,我可以接受以下对象,

{
    'some_field_name_for_dictfield': {
        'unknown_key1': 'value1',
        'unknown_key2': 'value2',
        'unknown_key3': 'value3',
        ...
    }
}

但仍然无法处理的对象,

{
    'unknown_key1': 'value1',
    'unknown_key2': 'value2',
    'unknown_key3': 'value3',
}

当然,简单地使用json.loads(request.data)效果很好,但我没有生成正确的模式。

然而,我想要的是,

  1. 使用序列化器
  2. 将其分配为 serializer_class
  3. 使用 drf-yasg 自动创建 swagger 文档

一种可能的解决方法是,手动将 swagger_auto_schema 装饰器的 request_body 参数设置为手动 openapi 格式规范。但这对我来说是最不利的选择。

总之,我想对未指定的键使用序列化程序,以便为 drf-yasg 正确生成模式。为了实现这一点,我应该几乎完全重写 drf 的序列化程序类吗?或者有一个简单的方法?

4

0 回答 0