允许在文档元中进行继承



如果我有一个文档:

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", {}))

最新更新