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

だと思いませんIN (NULL, 1)か?

お気に入り:

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

これはデフォルトの SQL の動作ですか、django のバグですか、それとも何か不足していf__in=ますか?

前もって感謝します!

4

2 に答える 2

8
a = M.objects.filter(Q(f__isnull=True) | Q(f__in=['1',...])) 
于 2013-03-12T16:24:22.637 に答える
1

Django の古いバグのようです ( https://code.djangoproject.com/ticket/13768 )。

Django 1.5 でいくつかのテストを行ったところ、まだ残っています。「__in」に適用されたリストで「None」を使用すると無視されます (エラーなし)。

キャサリンのアプローチは魅力のように機能します:)

于 2013-11-14T18:34:02.293 に答える