python - Mongoengine 属性错误

标签 python flask mongoengine flask-mongoengine

我正在尝试使用 Flask-Mongoengine 和 Flask-Login 为应用编写授权代码。我收到了这个奇怪的错误:

File "/usr/lib/python3.5/site-packages/mongoengine/base/document.py", line 188, in __setattr__
    super(BaseDocument, self).__setattr__(name, value)
  File "/usr/lib/python3.5/site-packages/mongoengine/base/fields.py", line 132, in __set__
    if instance._initialised:
AttributeError: _initialised

我的模型.py:

from app import app, db
from flask.ext.login import LoginManager


login_manager = LoginManager()
login_manager.init_app(app)


class User(db.Document):
    email = db.StringField(required=True)
    first_name = db.StringField(max_lenght=40, required=True)
    last_name = db.StringField(max_lenght=40, required=True)
    password = db.StringField(required=True)

    def __init__(self, email, first_name, last_name, password):
        self.email = email
        self.first_name = first_name
        self.last_name = last_name
        self.password = password

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

   def get_id(self):
        return self.email

我试过超越类(class),但没有帮助。

https://github.com/MongoEngine/flask-mongoengine/issues/156

最佳答案

Mongoengine 不需要您定义 __init__。

class User(db.Document):
    email = db.StringField(required=True)
    first_name = db.StringField(max_lenght=40, required=True)
    last_name = db.StringField(max_lenght=40, required=True)
    password = db.StringField(required=True)

    def clean(self):
        # clean will be called when you call .save()
        # You can do whatever you'd like to clean data before save
        self.password = str(self.password)

那么你所要做的就是

user = User(email='email@gmail', first_name='hello', last_name='there', password=2342143213)
user.save()
print(user.id)

关于python - Mongoengine 属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363726/

相关文章:

python 循环中的交叉表函数

python - Flask-Toastr安装

python-3.x - Docker、Ubuntu 18.04 python3.7.2 : standard_init_linux. go:207: exec 用户进程导致 "exec format error"

python - 如何使用 MongoEngine 将 MySQL 数据库转移到 MongoDB?

python - MongoDB、MongoEngine : unique list items

python - 读取多个blast文件(biopython)

python - str不可调用sendto python

python - 具有以列表中指定的前缀开头的属性的对象的 MongoEngine 查询列表

javascript - 使用子进程在 Node.js 中进行复杂的数据操作

python - 在PythonAnywhere上使用Gevent或Tornado部署Flask