Kurzversion: Warum schließt Model.objects.exclude (..__ in = [None]) jedes Objekt aus?Grundlegendes zu Django-Abfragefeldsuche in
Ich habe ein interessantes Verhalten von Django-Feld-Lookup, die ich nicht verstehe. Lassen Sie uns sagen, dass ich 21 Objekte eines bestimmten Modells haben:
>>> Model.objects.count()
21
Wenn ich ausschließen einen bestimmten privaten Schlüssel direkt oder mit in
Feld Lookup bekomme ich das erwartete Verhalten:
>>> Model.objects.exclude(pk=1).count()
20
>>> Model.objects.exclude(pk__in=[1]).count()
20
Wenn ich den privaten Schlüssel ausschließen Wert None
ich das erwartete Ergebnis:
>>> Model.objects.exclude(pk=None).count()
21
Allerdings, wenn ich das gleiche mit dem in
Feld Lookup tue nichts, was ich zurück:
>>> Model.objects.exclude(pk__in=[None]).count()
0
Warum ist das so?
Gute Eins. Höchstwahrscheinlich der Fall. Wusste nicht über 'connection.queries' –