2017-04-26 2 views
0

Schauen Sie sich diese Abfrage:Angabe des SQL-Ausdruck als Spaltenname in einer django ORM Abfrage

select 'DEFAULT_STRING' as category from foo 

Hier haben wir nicht wirklich category in der Tabelle die Spalte, aber wir verwenden nur einen Stringliteral darzustellen Dieser Spaltenwert in allen von der Abfrage zurückgegebenen Zeilen. Anstelle eines String-Literals könnten wir oben jeden gültigen SQL-Ausdruck haben. Gibt es eine Möglichkeit, diese Abfrage im django ORM zu haben?

Antwort

0

Eine praktische Möglichkeit, dies zu tun, ist annotate mit RawSQL Abfrageausdruck.

from django.db.models.expressions import RawSQL 
qset = Foo.objects.annotate(category=RawSQL("select 'DEFAULT_CATEGORY'",())) 

Bitte lassen Sie mich in den Antworten wissen, ob es gibt bessere Möglichkeiten, dies zu tun.

Verwandte Themen