python - 使用 MongoEngine 和 Q 构建查询抛出 InvalidQueryError

标签 python django mongoengine

我正在尝试使用 MongoEnginedjango.db.models.Q 类构建一个简单的 or 查询。

我的代码(从 ./manage.py shell 运行)是:

from db.models import User
from django.db.models import Q

User.objects.filter(Q(username='foo') | Q(email='bar'))

我的 models.py 就是

from mongoengine import *

class User(Document):
    username = StringField()
    email = StringField()

我试过几个不同的版本,总是报如下错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "venv/lib/python2.7/site-packages/mongoengine/queryset/base.py", line 193, in filter
    return self.__call__(*q_objs, **query)
  File "venv/lib/python2.7/site-packages/mongoengine/queryset/base.py", line 109, in __call__
    raise InvalidQueryError(msg)
InvalidQueryError: Not a query object: (OR: ('username', 'foo'), ('email', 'bar')). Did you intend to use key=value?

我正在使用 Python 2.7.6 和以下软件包:

dj-database-url==0.3.0
dj-static==0.0.6
Django==1.8
django-toolbelt==0.0.1
gunicorn==19.3.0
mongoengine==0.9.0
psycopg2==2.6
pymongo==2.8
static3==0.5.1

我是 Python 和 Django 的新手,但这看起来相当简单。我做错了什么?

最佳答案

事实证明我导入了错误的 Q 类。对于 MongoEngine,它应该是:

from mongoengine.queryset.visitor import Q

关于python - 使用 MongoEngine 和 Q 构建查询抛出 InvalidQueryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29456379/

相关文章:

python - 如何配置 YAML 以创建新的日志文件而不是附加它们?

python - 如何在文本文件中多次出现某些单词后提取 3000 个字符?

python - 使用 lxml 重复 XML 元素

django 在向后迁移/loaddata 后从夹具加载数据使用的是模型架构而不是数据库架构

python - 如何提取具有最大值的 Django 对象?

python - MongoEngine:关闭连接

python - 在 MongoEngine 中过滤嵌入列表

python - 使用biopython从entrez获取基因序列

python - 如何在 DRF 中通过一个请求创建多个对象(相关)?

flask - 蒙戈引擎 : How to update specific fields of an existing document?