标签: mongoengine

MongoEngine - 用于否定的查询运算符 - 替代 except()

我需要进行否定查询。在 Django 中我会使用exclude(),但对于MongoEngine 文档排除意味着不同的东西。

是否有查询运算符或不同的函数来进行否定?

例子:

MyClass.objects.exclude(attribute="test")
Run Code Online (Sandbox Code Playgroud)

django negation mongodb mongoengine

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

在MongoEngine中使用reverse_delete_rule时,如何使用循环或前向ReferenceField?

这段代码炸弹:

from mongoengine import *

class Employee(Document):
    name = StringField()
    boss = ReferenceField("Employee", reverse_delete_rule = NULLIFY)
Run Code Online (Sandbox Code Playgroud)

以下是例外情况:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "[…]/mongoengine/base.py", line 791, in __new__
    new_class = super_new(cls, name, bases, attrs)
  File "[…]/mongoengine/base.py", line 630, in __new__
    f.document_type.register_delete_rule(new_class,
    File "[…]/mongoengine/fields.py", line 757, in document_type
    self.document_type_obj = get_document(self.document_type_obj)
  File "[…]/mongoengine/base.py", line 136, in get_document
    """.strip() % name)
mongoengine.base.NotRegistered: `Employee` has not been registered
in the document registry.
Importing the document class automatically …
Run Code Online (Sandbox Code Playgroud)

forward-declaration cyclic-reference mongoengine

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

Flask,MongoEngine,WTForms-表单呈现错误

我有以下模型:

class Post(Document):
    body = db.StringField(required=True)
    author = db.StringField(verbose_name="Author", max_length=255, required=True)
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    comments = db.ListField(db.EmbeddedDocumentField('Comment'))
Run Code Online (Sandbox Code Playgroud)

和下面的视图:

from flask.ext.mongoengine.wtf import model_form

@app.route('/')
def home():
    form = model_form(Post, exclude=('created_at', 'comments'))
    return render_template('home.html', form=form)
Run Code Online (Sandbox Code Playgroud)

我不知道如何在模板中呈现此表单。我确实尝试了几件事:

{% for field in form %}
    {{ field }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误:

TypeError: 'FormMeta' object is not iterable
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

{{ form.body() }}
Run Code Online (Sandbox Code Playgroud)

有不同的错误:

AttributeError: 'UnboundField' object has no attribute '__call__'
Run Code Online (Sandbox Code Playgroud)

和{{form.body}}这样的渲染

<UnboundField(TextAreaField, (), {'default': None, 'validators': [<wtforms.validators.Required object at 0x7f63804d0fd0>], 'description': '', 'filters': [], …
Run Code Online (Sandbox Code Playgroud)

mongoengine flask wtforms

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

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
查看次数

ImportError:没有名为flask.ext.mongoengine的模块

我正试图把烧瓶挂到mongoengine上.所有模块似乎都已成功安装.这是我的导入,而ln 4是错误源自的地方:

import os
from flask import Flask, render_template, send_from_directory
from mongoengine import connect
from flask.ext.mongoengine import MongoEngine
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

File "app.py", line 4, in <module>
from flask.ext.mongoengine import MongoEngine
File "/Users/name/Desktop/venv3/lib/python2.7/site-packages/flask/exthook.py" line 87, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named flask.ext.mongoengine
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么或者如何获得flask.ext.mongoengine的任何想法?

mongodb mongoengine python-2.7

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

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
查看次数

Django:更改模型中的字段类型时出现 FieldDoesNotExist 错误

我对我的models.py. 我将字段从 更改FileField()ImageWithThumbsField()

from mongoengine import *
from gradfounder.settings import DBNAME
from embed_video.fields import EmbedVideoField
from thumbs import ImageWithThumbsField

##########################################
# Mongoengine registration/authentication
#from mongoengine.django.auth import User
##########################################

#connect(DBNAME)
# connect(DBNAME, host='127.0.0.1', port=27017)
connect(DBNAME, host='xxx.xxx.xxx.xxx', port=27017)

class Author(Document):
    # photo = FileField()
    photo = ImageWithThumbsField(upload_to="avatars")
    photoname = StringField()
Run Code Online (Sandbox Code Playgroud)

然后我得到了这个错误

  File "C:\Python27\lib\site-packages\mongoengine\base\document.py", line 80, in
 __init__
    raise FieldDoesNotExist(msg)
FieldDoesNotExist: The field 'photo' does not exist on the document 'Author'
Run Code Online (Sandbox Code Playgroud)

我尝试迁移,syncdb但出现错误DatabaseError: (1050, "Table 'profiles_profile' …

python django django-models django-file-upload mongoengine

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

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

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

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

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

python mongoengine flask flask-mongoengine

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

mongoengine 启用“allowDiskUse”

是否有一个选项允许在 mongoengine 中使用磁盘?我在网上找不到任何资源。

我试过

model.objects.aggregate(pipeline, {'allowDiskUse': True})
Run Code Online (Sandbox Code Playgroud)

这会抛出:

Each element of the 'pipeline' array must be an object
Run Code Online (Sandbox Code Playgroud)

python mongodb mongoengine

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

MongoEngine:EmbeddedDocumentListField()和ListField(EmbeddedDocumentField())之间的区别?

标题。这两个陈述是做同样的事情,还是我在这里错过了什么?

cars = db.EmbeddedDocumentListField(Car, default= [])
Run Code Online (Sandbox Code Playgroud)

cars = db.ListField(db.EmbeddedDocumentField(Car), default=[])
Run Code Online (Sandbox Code Playgroud)

python mongoengine

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