我想序列化/反序列化没有固定键的对象。
我知道为此目的有 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)
效果很好,但我没有生成正确的模式。
然而,我想要的是,
- 使用序列化器
- 将其分配为 serializer_class
- 使用 drf-yasg 自动创建 swagger 文档
一种可能的解决方法是,手动将 swagger_auto_schema 装饰器的 request_body 参数设置为手动 openapi 格式规范。但这对我来说是最不利的选择。
总之,我想对未指定的键使用序列化程序,以便为 drf-yasg 正确生成模式。为了实现这一点,我应该几乎完全重写 drf 的序列化程序类吗?或者有一个简单的方法?