[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
質問
私は
first_name
,
last_name
&
alias
(オプション) を検索する必要があります。つまり、エイリアスが設定されているすべての名前を取得するためのクエリーが必要です。
できればの話ですが。
Name.objects.filter(alias!="")
では、上記に相当するものは何でしょうか?
どのように解決するのですか?
こんなこともできるんですね。
Name.objects.exclude(alias__isnull=True)
null 値を除外する必要がある場合 と のような空文字列の場合、このように条件を連結するのが望ましい。
Name.objects.exclude(alias__isnull=True).exclude(alias__exact='')
これらのメソッドを連結することで、基本的にそれぞれの条件を個別にチェックすることができます。
alias
がNULLであるか
または
は空の文字列なので、すべての
Name
オブジェクトは、NULLでなく、空でない
alias
フィールドがあります。生成されたSQLは次のようになります。
SELECT * FROM Name WHERE alias IS NOT NULL AND alias != ""
の1回の呼び出しに複数の引数を渡すこともできます。
exclude
を満たすオブジェクトのみが
あらゆる
が除外される。
Name.objects.exclude(some_field=True, other_field=True)
ここで、行のうち
some_field
と
other_field
が真である行は除外されるので、両方のフィールドが真でない行がすべて取得されます。生成されたSQLコードは次のようになります。
SELECT * FROM Name WHERE NOT (some_field = TRUE AND other_field = TRUE)
あるいは、ロジックがもっと複雑な場合は、Django の Qオブジェクト :
from django.db.models import Q
Name.objects.exclude(Q(alias__isnull=True) | Q(alias__exact=''))
詳細はこちらをご覧ください。 このページ と このページ を Django docs に追加しました。
<サブ 余談ですが 私のSQLの例は単なるアナロジーであり、実際に生成されるSQLコードはおそらく異なるものになるでしょう。実際に生成された SQL を見ることで、 Django のクエリがどのように動作するのか、より深く理解できるでしょう。
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
django request.data を修正する AttributeError: 属性を設定できない
-
Djangoの基本(16)。テンプレートタグの紹介とそのカスタマイズ方法
-
オペレーショナルエラーです。1050 解決
-
django のクエリセット操作
-
Django ForeignKey逆引きクエリにおけるfilterと_setの効率比較
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み] Docker-Compose使用時にDjangoデータベースのマイグレーションをどのように行うか?
-
[解決済み] Django が ManyToMany リレーションシップからオブジェクトを取り除く
-
[解決済み] Djangoテンプレートでネストされたforループで一番外側のforloop.counterにアクセスする方法は?
-
[解決済み] django のモデルのクラス名を取得する