Python 字典在分配后成为MongoEngine中的基列表

Python 字典在分配后成为MongoEngine中的基列表,python,dictionary,mongoengine,Python,Dictionary,Mongoengine,我正在使用mongoengine0.9.0 class EntityChange(Document): ... old_data = DictField() new_data = DictField() 我想将dict对象保存到old\u data和new\u data中 为什么字段在赋值后变成基本列表 data = {u'int_id': 100500, u'_cls': 'BuildingKind', ...} instance = EntityChange() i

我正在使用mongoengine0.9.0

class EntityChange(Document):
    ...
    old_data = DictField()
    new_data = DictField()
我想将
dict
对象保存到
old\u data
new\u data

为什么字段在赋值后变成
基本列表

data = {u'int_id': 100500, u'_cls': 'BuildingKind', ...}
instance = EntityChange()
instance.new_data = data
# after that
# isinstance(instance, BaseList) is True
# isinstance(instance, BaseDict) is False
# instance.new_data == ['int_id', 'id', ...] is True. why?


您可以发布
isinstance(instance.new_data,BaseDict)
type(instance.new_data)
的输出,以及
instance.new_data
的输出(省去比较)@NilsWerner,当然可以。它适用于0.9.0
isinstance(instance.new_data,BaseDict):False类型(instance.new_data):instance.new_数据:['id','ent_id','int_id','type','u cls']
我无法复制这个,你能创建am吗?还要检查
BuildingKind
有什么问题。也许设置
\u cls
属性是罪魁祸首。我实际上使用的是flask mongoengine包装器。在这里你可以得到mcve。只需执行docker编写--build。一件有趣的事<代码>\u cls新数据的
字段要求存在model BuildingKind。这真的很奇怪。谢谢,升级到0.10.1修复了行为。