如果我有一个文档:
class First(Document):
field1 = StringField()
meta = {'allow_inheritance': True}
class Second(First):
field2 = StringField()
meta = {
'indexes': ['field2']
}
这行得通吗? 我很好奇 Second 中的元是否会覆盖 First 中的allow_inheritance并破坏应用程序。 它似乎可以在测试中工作,但我不确定如何处理。
是的,它会起作用。
meta
没有被覆盖,你可以说它会被更新。
当您从Second
模型中实例化文档并save()
该文档时,将保存在first
集合中,并且在那一刻first
集合中将创建field2
索引。
更多详情:
从源代码, 类Document
有一个metaclass=TopLevelDocumentMetaclass
,它将默认操作覆盖更改为更新,类似于attrs["_meta"].update(attrs.get("meta", {}))