2016-04-03 9 views
0

Okay, so habe ich ein Modell für Standorte und Menüoptionen und eine viele zu viele Beziehung zwischen ihnen.Django manytomany Filter entweder (relations = keine oder ausschließen, wenn eine Relation = x)

Ich möchte Menüoptionen anzeigen, die dem Standort noch nicht zugeordnet sind. Also habe ich das gemacht ..

Dies führt jedoch zu Menüoptionen, die derzeit keine Standortbeziehungen haben, die nicht auf der Liste erscheinen.

Was würde ich tun möchte, ist die Vereinigung dieser beiden:

Options.objects.filter(location=None) 
Options.objects.exclude(location=location_pk) 

Ich habe versucht ...

options = options.filter(Q(location=None) | ~Q(location=location_pk)) 

... aber, wenn eine Option mehrere Standorte hat dann die ~Q(location=location_pk) wird Passe den anderen Ort an.

Kann jemand helfen?

Ich bin sicher, dass dies möglich sein muss, aber ein Teil von mir denkt, dass es nicht sein könnte oder dass die Lösung unnötig komplex sein muss.

Danke.

Antwort

0

Okay, also habe ich eine Lösung gefunden.

Dies scheint die Arbeit zu tun ...

Option.objects.exclude(~Q(location=None) & Q(location=location_pk)) 

Will einen Blick näher an dem SQL-Ausgang haben muß für die Abfragen, genau zu sehen, was los ist.

Dankbar, dass es dauerte nicht länger als ich dachte, um herauszufinden, und ist nicht komplex. puh