gruifor, Today, my friendship with #Django has developed serious cracks.
I realized by accident that
QuerySet.filter(Q())
gives you all instances, suggesting that theQ()
is in some sense equivalent to "true". The surprise comes when you haveQuerySet.filter(Q() | Q(foo='bar'))
, which gives you only those instances wherefoo
is "bar", even though the disjunction should also be equivalent true, since "true OR something" is always equivalent to true. This makes no sense.