a = M.objects.filter(f__in=[None, 1])
a.query.__str__()
u'SELECT * FROM "app_m" WHERE "app_m"."f" IN (None, 1)'
dont you think that would be IN (NULL, 1)
?
like:
a = M.objects.filter(f=None)
a.query.__str__()
u'SELECT * FROM "app_m" WHERE "app_m"."f" IS NULL'
Is this a default SQL behavior, django bug or I am missing something with f__in=
?
thank you in advance!
a = M.objects.filter(Q(f__isnull=True) | Q(f__in=['1',...]))
It seems to be and old bug in Django (https://code.djangoproject.com/ticket/13768).
I just made few tests with Django 1.5 and it still is there: 'None' gets ignored when used in a list applied to "__in" (no errors).
Catherine approach works like a charm :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With