2010-07-02 15 views
27

Wygląda na to, że metoda filtrowania modelu obiektowego Django automatycznie używa słowa kluczowego AND SQL.Jak korzystać z OR używając systemu filtrów modelu Django?

Na przykład:

>>> Publisher.objects.filter(name__contains="press", country__contains="U.S.A") 

automatycznie przekładają się na coś takiego:

SELECT ... 
FROM publisher 
WHERE name LIKE '%press%' 
AND country LIKE '%U.S.A.%' 

Jednak, zastanawiałem się, czy istnieje sposób, aby to 'I' an 'OR'? Nie mogę tego znaleźć w dokumentacji (co dziwne, szukanie "lub" nie jest zbyt użyteczne).

Odpowiedz

52

Można użyć Q objects robić co chcesz, poprzez mnożenie OR-ing je razem:

from django.db.models import Q 
Publisher.objects.filter(Q(name__contains="press") | Q(country__contains="U.S.A")) 
+0

Dzięki! Wygląda na to, że powinno wystarczyć. – Simon

Powiązane problemy