Mongoengine: TypeError: __init__() 得到一个意外的关键字参数

Hou*_*man 3 mongoengine flask flask-mongoengine

我正在使用flask-mongoengine 扩展,我有一个像这样的用户类:

class User(db.Document, UserMixin):     
    email = db.StringField(max_length=120, required=True, unique=True)
    password_hash = db.StringField(max_length=80, required=True)   
    active = db.BooleanField()
    fb_id = db.StringField(max_length=120, required=False)

    def __init__(self, email, password, fb_id=None, active=True):           
        hashp = md5.md5(password).hexdigest()        
        self.email=email
        self.password_hash=hashp
        self.fb_id=fb_id
        self.active=active
Run Code Online (Sandbox Code Playgroud)

但是当我做一个简单的获取时: User.objects.get(email = email)

我收到错误:

TypeError: __init__() got an unexpected keyword argument 'password_hash'

但是我在我的 init 中设置了 password_hash。令人惊讶的是,如果我删除整个__init__并通过 args 传递所有内容,它工作正常。

所以我认为我在__init__. 我很坚持这一点,将不胜感激您的帮助。

小智 5

尝试降级 pymongo。

pip install pymongo==2.8
Run Code Online (Sandbox Code Playgroud)

无论如何我都会收到这个错误,我修复它的唯一方法是将 pymongo 从 3.0 降级到 2.8。