[解決済み] Django の QuerySet で、多対一の関係で "not exists" をフィルタリングする方法です。
2023-06-16 22:18:16
質問
このようなモデルが2つあります。
class User(models.Model):
email = models.EmailField()
class Report(models.Model):
user = models.ForeignKey(User)
実際には、各モデルは、この質問には関係のない、より多くのフィールドを持っています。
私は、'a'で始まる電子メールを持っていて、レポートを持っていないすべてのユーザーをフィルタリングしたいのです。さらに
.filter()
と
.exclude()
の基準を他のフィールドに基づいて設定します。
このようにアプローチしたい。
users = User.objects.filter(email__like = 'a%')
users = users.filter(<other filters>)
users = ???
私は、レポートが関連付けられていないユーザーをフィルタリングしたいと思います。どのようにしたらよいでしょうか。私が提示したようにこれが可能でない場合、別のアプローチは何ですか?
どのように解決するのですか?
注意: この回答は 2013 年に Django 1.5 用に書かれたものです。Django の新しいバージョンで動作する、より良いアプローチについては、他の回答を参照してください。
使用方法
isnull
.
users_without_reports = User.objects.filter(report__isnull=True)
users_with_reports = User.objects.filter(report__isnull=False).distinct()
を使う場合
isnull=False
を使うと
distinct()
は、結果の重複を防ぐために必要です。
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み] Djangoのテンプレートからsettings.pyの定数にアクセスすることは可能ですか?
-
[解決済み] django のクエリセットで OR 条件を実行する方法は?
-
[解決済み】Djangoで一対多の関係を表現する方法は?
-
[解決済み] Django では、動的なフィールド検索で QuerySet をどのようにフィルタリングするのでしょうか?
-
[解決済み] Django ORM のクエリセットに対応する SQL クエリを表示するには?
-
[解決済み] 多対多フィールドを持つDjangoモデルのオブジェクトを作成する方法は?
-
[解決済み] egg_infoエラーでpipからインストールできない
-
[解決済み] django のユニットテストを複数のファイルに分散させるには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
オペレーショナルエラーです。1050 解決
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
[解決済み】Djangoでモデルインスタンスをシリアライズする方法は?
-
[解決済み] Djangoテンプレート内でコレクションのサイズを確認するにはどうすればよいですか?
-
[解決済み] django : select_related と get_object_or_404 を一緒に使用する。
-
[解決済み] 学習に適したオープンソースのdjangoプロジェクト【非公開
-
[解決済み] Djangoのクッキー、どうすれば設定できますか?
-
[解決済み] Django Forms: 有効でない場合、エラーメッセージとともにフォームを表示する
-
[解決済み] DjangoでSELECT COUNT(*) GROUP BYとORDER BYを行うにはどうすればよいですか?