2014-02-08 121 views
1

我在执行查询时遇到问题,它给了我错误。但是,如果从控制台Django的运行,我回到正确'QCombination'对象不可迭代

结果在Python Shell(蟒蛇manage.py壳)

>>> from api.models import User 
>>> from django.db.models import Q 
>>> User.objects.filter(Q(username__contains='lucas')) 
[<User: @lucas>, <User: @lucasfuentes>, <User: @lucas_gasolero>] 

在views.py

def search(req, keyword): 
    users = User.objects.filter(
     Q(username__contains='lucas') | Q(name__contains='lucas') 
    ) 
    [..] 

ERROR: 'QCombination'对象是不可迭代的

Traceback: 
File "[..]/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    115. response = callback(request, *callback_args, **callback_kwargs) 

File "[..]/api/views.py" in search 
    84. Q(username__contains='lucas') | Q(name__contains='lucas') 

File "[..]/lib/python2.7/site-packages/django/db/models/manager.py" in filter 
    155. return self.get_query_set().filter(*args, **kwargs) 

File "[..]lib/python2.7/site-packages/django/db/models/query.py" in filter 
    669. return self._filter_or_exclude(False, *args, **kwargs) 

File "[..]lib/python2.7/site-packages/django/db/models/query.py" in _filter_or_exclude 
    687. clone.query.add_q(Q(*args, **kwargs)) 

File "[..]lib/python2.7/site-packages/django/db/models/sql/query.py" in add_q 
    1271. can_reuse=used_aliases, force_having=force_having) 
File "[..]lib/python2.7/site-packages/django/db/models/sql/query.py" in add_filter 
    1066. arg, value = filter_expr 

Exception Type: TypeError at /v1/search/as/ 
Exception Value: 'QCombination' object is not iterable 
+1

在shell中它不是同一个查询。你有没有在shell中尝试过Q(username__contains ='lucas')| Q(name__contains = '卢卡斯')'? – warvariuc

+0

是一样的。在views.py'Q(username__contains ='lucas') - 错误'Q'对象不可迭代。在shell中'Q(username__contains ='lucas')| Q(name__contains ='lucas')'没有错误! :( – lucasmg

+0

@lucasmg,你是否仍然有同样的问题? – Nil

回答

0

由于没有人回答,我会尝试一些。确保你输入正确的User。在Django documentation,它的进口是这样的:

from django.contrib.auth.models import User 

我们可以看到,你在你的shell使用from api.models import User,但我们不看你如何在你的意见导入User。我知道它在shell中与“坏”导入一起工作,但仍然要确保在这两种情况下使用正确的导入并告诉我们结果。如果它仍然不起作用,我不知道,对不起!

0

像@Nil所说的,但在views.py中检查Q导入。它可能不是django.db.models.Q