Wie erstelle ich ein Django -Queryset -Äquivalent einer SQL -Abfrage mit dem oder Operator?

StackOverflow https://stackoverflow.com/questions/827384

  •  05-07-2019
  •  | 
  •  

Frage

In Django weiß ich es zu benutzen filter mit mehreren Argumenten wird in SQL übersetzt AND Klauseln. Aus dem Django -Buch:

Sie können mehrere Argumente in Filter () übergeben, um die Dinge weiter einzugrenzen:

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[<Publisher: Apress>]

Diese mehrere Argumente werden in SQL und Klauseln übersetzt. Somit übersetzt sich das Beispiel im Code -Snippet in Folgendes:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A.'
AND state_province = 'CA';

Wie erstelle ich einen Django -Queryset, der in SQL übersetzt wird OR Klauseln? Zum Beispiel:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE state_province = 'AZ'
OR state_province = 'CA'; 
War es hilfreich?

Lösung

Verwenden des Q -Bedieners in django.db.models

Dh:

from django.db.models import Q
Publisher.objects.filter(Q(state_province="CA") | Q(state_province="AZ"))

Schauen Sie sich hier in den Dokumenten an: http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top