标签: flask-mongoengine

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
Run Code Online (Sandbox Code Playgroud)

我的models.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 …
Run Code Online (Sandbox Code Playgroud)

python mongoengine flask flask-mongoengine

2
推荐指数
1
解决办法
1526
查看次数

python/mongoengine 将关键字参数作为变量传递

我正在尝试创建一个传递键/值参数来获取对象的 get 方法。

def find_by_one(self, val, key='id'):
    obj = self.__model__.objects(key=val).first()
    return obj if obj else None
Run Code Online (Sandbox Code Playgroud)

我得到的错误

InvalidQueryError: Cannot resolve field "key"
Run Code Online (Sandbox Code Playgroud)

亲切地回答了我的问题。我最终改变了我的方法来传递 **kwargs 并将其作为我的查询集传递

  def find_by_one(self, **kwargs):
    user = self.__model__.objects(**kwargs).first()
    return user if user else None
Run Code Online (Sandbox Code Playgroud)

现在我可以调用我的 find_by_one

obj.find_by_one(id=obj_id)
Run Code Online (Sandbox Code Playgroud)

代替

obj.find_by_one(obj_id)
Run Code Online (Sandbox Code Playgroud)

python mongoengine flask-mongoengine

1
推荐指数
1
解决办法
1385
查看次数

Mongoengine LongField溢出错误

我有一个Text模型;

class Text(db.Document):
    siphash_value = db.LongField()
Run Code Online (Sandbox Code Playgroud)

然后我用siphash lib创建一个哈希.(https://github.com/majek/pysiphash)

此lib将字符串转换为长值,如12398370950267227270L

如果我尝试将文档保存到我的数据库;

Text(siphash_value=12398370950267227270L).save()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

OverflowError: MongoDB can only handle up to 8-byte ints
Run Code Online (Sandbox Code Playgroud)

mongodb mongoengine flask-mongoengine

1
推荐指数
1
解决办法
2343
查看次数

python wtf AttributeError:'ObjectIdField'对象没有属性'help_text'

基于教程,我正在尝试创建一个表单来进行一些测量.似乎显示数据的部分正在工作,但是当使用model_form命令生成输入表单时,它会突然出现以下错误:

在转换'description'中输入文件"/myproject/lib/python3.4/site-packages/flask_mongoengine/wtf/orm.py",第49行:field.help_text或'',

AttributeError:'ObjectIdField'对象没有属性'help_text'

错误发生在我的代码的这一行:

form_cls = model_form(Measurement, exclude=('id', 'created_at', 'comments'))
Run Code Online (Sandbox Code Playgroud)

这是我的view.py代码:

from flask import Blueprint, request, redirect, render_template, url_for
from flask.views import MethodView
from flask.ext.mongoengine.wtf import model_form
from pyReefLog.models import Measurement

measurements = Blueprint('measurements', __name__, template_folder='templates')


class List(MethodView):
    cls = Measurement

    def get(self):
        measurements = self.cls.objects.all()
        return render_template('measurements/list.html', measurements=measurements)


class Detail(MethodView):

    def get_context(self, creator=None):
        form_cls = model_form(Measurement, exclude=('id', 'created_at', 'comments'))

        if creator:
            measurement = Measurement.objects.get_or_404(creator=creator)
            if request.method == 'POST':
                form = form_cls(request.form, inital=measurement._data)
            else:
                form = …
Run Code Online (Sandbox Code Playgroud)

python mongoengine flask flask-wtforms flask-mongoengine

1
推荐指数
1
解决办法
1285
查看次数

将 Flask-Mongoengine 与现有 Mongoengine 文档一起使用

我们计划使用 Flask 和 Mongoengine 开发一个应用程序。然而,我们已经在非 Flask 应用程序中使用了一些 mongoengine 文档定义,如果可能的话,我们希望将这些定义重构到一个包中,以便在 Flask 和非 Flask 应用程序中使用它。

这可能吗?我已经阅读了 Flask Mongoengine 的初始化代码,它似乎只是覆盖了文档的一些基类,并从 Flask 应用程序中提取配置。另外,我发现了这个(未回答的)问题:

将基本的 mongoengine 文档定义拉入flask-mongoengine

python mongoengine flask flask-mongoengine

1
推荐指数
1
解决办法
505
查看次数