来自 Flask-MongoKit 的元类错误

Posted

技术标签:

【中文标题】来自 Flask-MongoKit 的元类错误【英文标题】:Metaclass error from Flask-MongoKit 【发布时间】:2013-07-10 13:19:22 【问题描述】:

我正在尝试使用 Flask、Flask-Login 和 Flask-MongoKit 组装一个基本的登录系统。

这是我的User 课程:

class User(Document):
    __collection__ = 'users'
    structure = 
        'username': basestring,
        'password': basestring,
        'date_created': datetime
    
    required_fields = ['username', 'password']
    default_values = 
        'date_created': datetime.utcnow
    

当我将 Document 模型连接到数据库 (db.register([User])) 时,对文档 (db.User.one('username': form.username)) 进行查询时会出现这个可爱的错误:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

我完全不明白这个错误,我不知道如何解决它。怎么了?

注意:我了解什么是元类冲突。我没有看到我是如何造成的:它似乎是在 MongoKit 内部的某个地方触发的。

【问题讨论】:

查看here 看看它是否有效。 当类的基础更改为与创建它们的内容不兼容时会发生这种情况。 【参考方案1】:

问题原来是我错误地导入了类(我将父模块提供给db.register而不是类。

【讨论】:

以上是关于来自 Flask-MongoKit 的元类错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥具有对象基础的元类会引发元类冲突?

深入理解Python中的元类(metaclass)

python面向对象--元类

在 Groovy 中,实例的元类与其类的元类有啥区别

Python 元类冲突

TypeError:元类冲突:派生类的元类