OR演算子を使用して、SQLクエリに相当するDjangoクエリセットを作成するにはどうすればよいですか?
-
05-07-2019 - |
質問
Djangoでは、複数の引数で filter
を使用すると、SQLの AND
句に変換されます。 Django Bookから:
複数の引数を渡すことができます 物事を絞り込むfilter() さらに:
>>> Publisher.objects.filter(country="U.S.A.", state_province="CA") [<Publisher: Apress>]
これらの複数の引数は SQL AND句に変換されます。したがって、 コードスニペットの例 次のように変換されます。
SELECT id, name, address, city, state_province, country, website FROM books_publisher WHERE country = 'U.S.A.' AND state_province = 'CA';
SQL OR
句に変換されるDjangoクエリセットを作成するにはどうすればよいですか?例:
SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE state_province = 'AZ'
OR state_province = 'CA';
解決
django.db.modelsで利用可能なQ演算子の使用
IE:
from django.db.models import Q
Publisher.objects.filter(Q(state_province="CA") | Q(state_province="AZ"))
こちらのドキュメントをご覧ください: http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects
所属していません StackOverflow