使用 MongoEngine 和 Q 构建查询抛出 InvalidQueryError
Constructing queries with MongoEngine and Q throws InvalidQueryError
我正在尝试使用 MongoEngine
和 django.db.models.Q
class.
构建一个简单的 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
class。对于 MongoEngine
应该是:
from mongoengine.queryset.visitor import Q
我正在尝试使用 MongoEngine
和 django.db.models.Q
class.
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
class。对于 MongoEngine
应该是:
from mongoengine.queryset.visitor import Q