2

我想使用 Django 过滤器进行 or 查询。我的代码看起来很简单,但它不起作用。我已经阅读了很多答案,但对我没有任何帮助。有什么问题?

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

这里有一个相关的问题,但这对我不起作用: 如何使用或使用 Django 的模型过滤系统?

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

4

1 回答 1

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.

于 2015-01-16T09:56:38.337 回答