Mongoengine:allow-unheritan时如何定义自定义集合名

2024-09-28 01:33:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想定义一个公共的文件库和方法。 但是我发现子文档在继承时不能定义它的自定义名称。 例如:

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'}

这将导致错误:

^{pr2}$

Tags: 文件方法trueage定义timeinheritanceitem
1条回答
网友
1楼 · 发布于 2024-09-28 01:33:02

如果你想要你的BaseInfo(不是应该是BaseItem?)为了本质上是一个mixin类,您应该按照docs here将其定义为abstract。在

class BaseItem(Document):
    account = StringField()
    insert_time = IntField()
    update_time = IntField()
    meta = {'abstract': True}

如果使用allow_inheritance将类指定为基类,则假定子类将位于同一个集合中。这样你就可以使用基来搜索对象,它也会正确地检索所有的子类。不能跨集合执行此操作。在

相关问题 更多 >

    热门问题