Django Q对象无法正常工作

时间:2015-01-16 09:46:33

标签: django python-2.7 mongoengine django-q

我想用Django过滤器进行查询或查询。我的代码似乎很容易,但它不起作用。我已经阅读了很多答案,但没有任何对我有用。这是什么错?

from django.db.models import Q
from models import Processoren

cpu = [
    "Intel",
    "AMD"
]

queryset = Processoren.objects.filter(Q(naam__contains=cpu[0]) | Q(naam__contains=cpu[1]))

#queryset = Processoren.objects.filter(naam__contains=cpu[0])

print queryset

注释的代码行确实有效,但上面的代码没有。

以下是Q对象的文档:https://docs.djangoproject.com/en/1.7/topics/db/queries/#complex-lookups-with-q-objects

这是一个相关的问题,但这对我不起作用: How to use OR using Django's model filter system?

有什么问题或忘记了什么?

1 个答案:

答案 0 :(得分:0)

此代码按预期工作。它产生非常正确的SQL查询:

SELECT "app_processoren"."id", "app_processoren"."naam"
FROM "app_processoren"
WHERE ("app_processoren"."naam" LIKE '%Intel%' OR
       "app_processoren"."naam" LIKE '%AMD%')

您的数据有问题。您确定存在naam='AMD'的记录吗?可能是他们有不同的情况(例如'Amd')?请尝试使用__icontains代替普通__contains