问题描述
在尝试使用点分隔的字段名称来load()
的数据时,使用unkNown=INCLUDE
会将其自动转换为嵌套的字典(这是我想要的),但是我想这样做使用unkNown=EXCLUDE
,因为我的数据具有很多我不想处理的属性。
似乎使用unkNown=EXCLUDE
不会发生这种自动转换,并且以点分隔的字段本身会传递给模式,这当然是无法识别的。完全不使用unkNown=
参数可以确认这一点,这会引发ValidationError。
是否可以合并unkNown=EXCLUDE
并仍获取嵌套数据?还是有更好的方法来应对这种情况?
谢谢!
# using marshmallow v3.7.1
from marshmallow import Schema,fields,INCLUDE,EXCLUDE
data = {'LEVEL1.LEVEL2.LEVEL3': 'FooBar'}
class Level3Schema(Schema):
LEVEL3 = fields.String()
class Level2Schema(Schema):
LEVEL2 = fields.nested(Level3Schema)
class Level1Schema(Schema):
LEVEL1 = fields.nested(Level2Schema)
schema = Level1Schema()
print(schema.load(data,unkNown=INCLUDE))
# prints: {'LEVEL1': {'LEVEL2': {'LEVEL3': 'FooBar'}}}
print(schema.load(data,unkNown=EXCLUDE))
# prints: {}
print(schema.load(data))
# raises: marshmallow.exceptions.ValidationError: {'LEVEL1.LEVEL2.LEVEL3': ['UnkNown field.']}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)