2016-05-17 5 views
0

Ich versuche unten angegebene SQL-Abfrage zu Django ORM zu konvertieren.Django ORM für nicht im Fall

select usp.user_id from Class_A as usp join Class_B as au 
     on au.id = usp.user_id join Class_C as up 
     on up.user_id = au.id where up.type not in ('A','B','C') 
     and up.end_time > now() and up.user_id = usp.user_id 
     and usp.data_enabled=1 and (usp.item_state=3 or usp.item_state=4) 
     and usp.user_id=au.id and au.is_active=1 

ich brauche, ist die Zeilen, deren Typ zum Ausfiltern von nicht einer von (‚A‘, ‚B‘, ‚C‘)

ich viele Kombination versucht, aber ich bin immer falsch Ergebnis, weil ich konnte nicht implementieren up.plan_type not in ('A','B','C') in der richtigen Weise. Ich versuchte, exclude() und ~Q() Variable zu verwenden, aber sie geben nicht richtiges Ergebnis, da sie Zeilen ausschließen, nachdem alle Join-Operation ausgeführt wurde, muss ich Zeilen ausschließen, während Join-Operation ausgeführt wird.

ich versucht, dieses

ClassA.objects.exclude(user__classA_plans__plan_type__in = ['I', 'C', 'D']).filter(user__classA_plans__end_time__gte = datetime.now(),**query) 

wo classA_plans Name verwandt ist.

Bitte helfen Sie mir dabei.

+1

was genau versuchen Sie zu tun? http://stackoverflow.com/help/how-to-ask – e4c5

+0

Sie sollten genau zeigen, was Sie bisher versucht haben – Sayse

+0

@Sayse Ich werde aktualisieren, was ich versucht habe – Pramod

Antwort

0

Bedingte Joins werden derzeit von Django ORM nicht unterstützt. Sie müssen die Abfrage entweder neu schreiben, raw sql verwenden oder zu einer anderen ORM-Engine wie SQLAlchemy wechseln.