我想定义一个基本文档来定义一些公共文件和方法。 但是我发现子文档在继承时无法定义其自定义名称。 例如:
from mongoengine import *
class BaseInfo(Document):
account = StringField()
insert_time = IntField()
update_time = IntField()
meta = {'allow_inheritance': True}
class SonItem(Document, BaseItem):
age = IntField()
meta = {'collection': 'son_item'}
meta = {'allow_inheritance': True}
class GrandItem(Document, BaseItem):
age = IntField()
meta = {'collection': 'grand_item'}
这将出现错误:
SyntaxWarning: Trying to set a collection on a subclass (SonItem)
答案 0 :(得分:0)
如果您希望BaseInfo
(不是BaseItem
?)本质上是一个mixin类,则应按照docs here将其定义为abstract
。
class BaseItem(Document):
account = StringField()
insert_time = IntField()
update_time = IntField()
meta = {'abstract': True}
如果您使用allow_inheritance
将类指定为基类,则假定子类将在同一集合中。这样,您可以使用基搜索对象,它也将正确检索所有子类。您不能跨集合执行此操作。