1

サンプルデータを含む次の構造があります。

id   season_id    title 
1    1            Intro
2    1            Second part
3    1            Third part
4    4            Other intro
5    4            Other second part

(理由は聞かないでください)、season_idは常にシーズンの最初のエピソードのIDを指します...

私が欲しいもの、以下を取得する:

1    1            Intro
4    4            Other intro

技術的に言えば、シーズンの最初のエピソードです-season_eidが最も低いすべてのエントリ

forと私はそれらのIDを取得するために次のクエリを使用しています:

Movie.objects.filter(category_type = 2).values('season_eid').annotate(models.Min('season_eid'))

IDを持っていると、djangoorm__in構文を使用してオブジェクトのすべてのデータを取得できます。

1つのクエリのみを使用して、グループ化/注釈付けを行い、すべてのフィールド/値を取得できますか?values + annotateは辞書のリストのみを提供しますが、これの代わりに、残りのフィールドで適切なオブジェクト(season_eidの最小値/分)を取得したいと思います。

4

1 に答える 1

1
Movie.objects.annotate(category_min_season = models.Min('category__season_id')).filter(season_id=category_min_season)

カテゴリにMoviesモデルへのFKがあると仮定します。

アップデート:

実際には、注釈も必要ありません。テーブルに保存した非正規化データのおかげです。

あなたはただすることができます:

Model.objects.filter(id=Q(season_id))
于 2010-02-23T12:50:50.273 に答える