Ich benutze Djangos eingebautes Benutzermodell und habe ein benutzerdefiniertes Foo-Objekt mit einem ForeignKey an Benutzer. Ich bin auf der Suche alle Benutzerobjekte und alle die Foo Objekte auszuwählen, die bestimmte Einschränkungen passen, etwa so:Django linken äußeren Join mit Filter
SELECT * from auth_user LEFT OUTER JOIN "foo" ON
(auth_user.id = foo.id AND <other criteria here>)
Wie soll ich dies in Django erreichen? Bisher habe ich versucht:
User.objects.filter(foo__<criteria>)
aber das erzeugt SQL ähnlich wie diese:
SELECT * from auth_user LEFT OUTER JOIN "foo" ON
(auth_user.id = foo.id) WHERE <other criteria here>
und liefert nur Objekte Benutzer, die Foo-Objekte haben, die den Kriterien entsprechen. Alternativ kann ich alle Benutzerobjekte auswählen und für jede eine Abfrage ausführen, aber das wäre wesentlich weniger effizient.
Was sind die anderen Kriterien? Ist es immer noch mit dem 'Foo'-Modell verbunden? – Ngenator
Ja. Foo enthält ein paar Datumsfelder und ich wähle nur Foos aus einem bestimmten Datumsbereich. – Phobophobia
Was soll 'User.objects.filter (foo__) 'tun? 'foo' ist kein Feld im' User'-Modell. Ich war nie in der Lage, eine Abfrage zu generieren, die 'LEFT OUTER JOIN' hat. –
user2233706