ソフトウェア開発 プログラミング

[Django]QuerySetでのOR句の使い方

ソフトウェア開発
この記事は約2分で読めます。
スポンサーリンク

DjangoSQL実行時にOR句をたまに使うんですが、使い方を毎回忘れてしまってしまうので、OR句の使い方をメモしておきます。

スポンサーリンク

OR句の使い方

下記をインポートします。

from django.db.models import Q

AまたはB」という条件を検索したい場合、

queryset = queryset.filter(Q(condition_a='A') | Q(condition_b='B'))

condition_a」「condition_b」は検索対象のフィールド、「A」「B」は検索条件に適宜置き換えてください。

パイプ(|)でQメソッドをつなげることでOR条件のクエリを実行できます。

AND句とOR句の両方使いたい場合

AND条件とOR条件を混合で使いたい場合もあると思います。その場合は、

queryset = queryset.filter(Q(condition_a='A') | Q(condition_b='B'), condition_c='C')

こんな感じでOR条件の後ろでカンマ(,)で条件をつなげるとOR条件とAND条件を両方使用することができます。

ちなみに、

queryset = queryset.filter(condition_c='C', Q(condition_a='A') | Q(condition_b='B'))

このようにAND条件をOR条件より前に記述するとエラーになりますので注意が必要です。

最後に

Djangoのクエリセットを利用しているとModelを操作する感覚になるので、実際のデータベースをイメージしにくくなり、クエリセットの検索条件を実装する時にどのように実装すればいいか分からなくなることもあると思います。その時は初心に帰った気持ちでSELECT文を実際に作ってみて、そこからDjangoのクエリエセットに落とし込むことで自身の思考をシンプルにすることができると思います。

スポンサーリンク
スポンサーリンク
KoEをフォローする
CodeLab

コメント

タイトルとURLをコピーしました