2010-07-02 4 views
27

Es scheint, dass die Objektmodell-Filtermethode von Django automatisch das Schlüsselwort AND SQL verwendet.Wie wird OR mit dem Modellfiltersystem von Django verwendet?

Zum Beispiel:

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

wird automatisch in übersetzen so etwas wie:

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

Aber ich habe mich gefragt, ob es einen Weg zu machen, dass ‚UND‘ ein ‚ODER‘? Ich kann es nicht in der Dokumentation finden (seltsamerweise ist die Suche nach 'oder' nicht wirklich nützlich).

Antwort

52

können Sie Q objects verwenden zu tun, was Sie wollen, durch bitweise OR-ing sie zusammen:

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

Dank! Das sieht so aus, als ob es den Trick machen sollte. – Simon

Verwandte Themen