Django Queryset __in列表中没有值

pan*_*ore 6 sql django django-models django-orm

a = M.objects.filter(f__in=[None, 1])
a.query.__str__()
u'SELECT * FROM "app_m" WHERE "app_m"."f" IN (None, 1)'
Run Code Online (Sandbox Code Playgroud)

你不觉得那会IN (NULL, 1)吗?

喜欢:

a = M.objects.filter(f=None)
a.query.__str__()
u'SELECT * FROM "app_m" WHERE "app_m"."f" IS NULL'
Run Code Online (Sandbox Code Playgroud)

这是一个默认的SQL行为,django bug还是我错过了什么f__in=

先感谢您!

cat*_*ine 7

a = M.objects.filter(Q(f__isnull=True) | Q(f__in=['1',...])) 
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记导入`Q`:`来自django.db.models import Q` (2认同)