django orm で存在する条件付きフィルタを書く
2022-03-02 21:42:49
SQL の exists サブクエリを django の orm で表現するのはちょっと面倒で、次の2つの部分を行う必要があります。
from django.db.models import Exists, OuterRef
# 1. define the subquery conditions
relative_comments = Comment.objects.filter(
post=OuterRef('pk'), # Note the foreign key association: post is a field in the Comment table, pk means it is associated with another table primary key
)
# 2. use annotate and filter together to define subqueries
Post.objects.annotate( # Use exists to define an additional field
recent_comment=Exists(recent_comments),
).filter(recent_comment=True) # Implement exists subquery filtering by checking the extra field in the condition
これは少しトリッキーなので、他の簡単な方法があれば自由にシェアしてください。
公式サイトの参考 https://docs.djangoproject.com/en/2.1/ref/models/expressions/#filtering-on-a-subquery-expression
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例