我想用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?
有什么问题或忘记了什么?
答案 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
。