Wie geht man in Django ORM vor, um ein Q-Objekt zu erstellen, das immer falsch ist?
Das ist ähnlich der Frage nach immer True Q-Objekten , aber umgekehrt.
Beachten Sie, dass dies nicht funktioniert:
%Vor%Warum möchte ich ein Q-Objekt anstelle des einfachen False-Werts? Damit ich es mit anderen Q-Werten kombinieren kann, so zum Beispiel:
%Vor%Was ist mit:
%Vor%oder
%Vor%Es scheint hacky, aber es scheint zu funktionieren. Zum Beispiel:
%Vor% Beachten Sie jedoch, dass es nicht so funktioniert, wie Sie es erwarten würden, wenn Sie mit einem leeren Q()
OR verknüpft wurden.
Die Lösung könnte darin bestehen, Q(pk__isnull=False)
als 'immer wahres Q' zu verwenden.
Ich habe nicht genug Reputation, um Kommentare abzugeben, aber Sam Masons Antwort ( Q(pk__in=[])
) hat den Vorteil, dass sie nicht einmal eine Datenbankabfrage durchführt, wenn sie alleine verwendet wird. Django (v1.10) scheint schlau genug zu sein, um zu erkennen, dass die Bedingung unerfüllbar ist, und gibt ein leeres Abfrage-Set zurück, ohne die Datenbank zu fragen.
Tags und Links django