問題タブ [django-aggregation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - QuerySetによるDjango集約?
私はリーグシステムを書いていて、そのシーズン中に各プレイヤーが獲得したポイントでソートされた各シーズンのプレイヤーランキングを表示したいと考えています。
これまでのところ、次のようなコードでそれを行うことができました:
もっと単純な集計でも同じことができると思いますが、 annotate() を正しく取得できません。
これを試してみましたが、シーズン全体のすべてのポイントを合計しただけです。
私は何が欠けていますか?移植可能なコードになる場合は、 .extra() を使用できると思います。
django - Djangoクエリ - データベースレベルで共通フィールドで要素をグループ化することは可能ですか?
以下に示すようなデータベースモデルがあります。データを、それぞれ 3 つの評価を持つ 2 冊の異なる本と考えてください。
質問 : 1 つのクエリで書籍ごとにすべての評価をリストにグループ化することは可能ですか。コードでクエリセットを反復処理せずに、データベース レベルでこれを実行しようとしています。出力は次のようになります。
このクエリを試してみましたが、本の名前でグループ化された評価も平均も正しくありません:
編集:データベースレベルで要素をグループ化する方法を探しているという明確化を追加しました。
sql - Django で複数の注釈を行うことはできません
私はdjango-eztablesを使用してデータテーブルのサーバー側処理を行っており、集計に関連するいくつかのフィールドを追加したいと考えています (ここで説明したように)
以下はそれぞれ個別に正常に動作します。
と
annotate()
しかし、どちらの順序でも、同じように、または次々に連鎖して両方を実行しようとすると、両方とも同じ数になります。これは、それぞれがどうあるべきかの結果です。
Countに追加distinct=True
すると、正しい値が生成されますが、それでも Sum は膨張した値になります。(繰り返しますが、順序を変更しても役に立ちません。また、Sum はdistinct
パラメーターを取りません) 。
SO で同様の質問をいくつか見たことがありますが、ほとんどは複数のカウントを扱っているようで、 を使用して解決できますdistinct=True
。サムを持っていたものもありましたが、解決策にはextra()
手作りの SQL を使用する必要があり、これまでのところ、必要なすべての外部キートラバーサルを処理するために適応させることができませんでした (SQL を少し使用しましたが、私は決して専門家ではありません)。extra()
唯一の実行可能な解決策である場合に備えて、関連するモデルの基本的なセットアップを次に示します。
- アイテムには SomeObject への外部キーがあります
- AnotherObject には、DifferentObject への外部キーと SomeObject への外部キーがあります
これらの問題を回避し、クエリセットで両方の注釈を取得する方法を知っている人がいれば、大歓迎です。
django - Django : annotate() と values() で空でない CharField のみをカウントする
Django はnull
onを使用しないことを推奨していCharField
ますが、 annotate はカウントに空の文字列を含めます。クエリから空の文字列を含む行を除外せずにそれを回避する方法はありますか?
私の質問は、単純にクエリを実行する方法ではありませんが、基本的に、注釈/集計カウントに空のフィールドを含めるかどうかです。Django は、文字列ベースのフィールドの NULL の代わりに空を考慮します。
私のモデル:
空でないレビューをカウントし、カテゴリ別にグループ化するには、次を使用します
annotate は空の値もカウントするため、これは機能しません (エントリが NULL の場合はカウントされません)。注釈呼び出しの前に空の文字列を除外できますが、クエリはより複雑で、すべての空オブジェクトと空でないオブジェクトが必要です。
注釈を使用してカウントから空の値をスキップするよりスマートな方法はありますか、またはモデルを変更する必要があります
に
python - 注釈の複数の結合
Likes機能を反映するためPost
にManyToMany関係を持つモデルがあります。User
さらにPost
、各投稿は既存のコメントにすることができるため、それ自体との ForeignKey 関係がありますPost
(1 つの深さレベルのみが強制されます - ディスカッション ツリーはありません)。
現在、最も活発な議論を得るために集計を使用しようとしています。Post
それぞれのいいね、コメント、コメントのいいねの合計であるスコアを計算したいと思います。
次の SQL は完全に機能します。
アグリゲーションを使用しようとすると:
次の SQL が生成されます。
期待どおりに機能していません。主な違いに注意してください:
COUNT(DISTINCT T7."id") AS "clc"
vs.
COUNT(T7."user_id") AS "clc"
最初の SQL リターンのような結果を達成するために集計を使用するid
代わりに、またはより賢い方法でdjango を強制的にカウントする方法はありますか?user_id
django - + でサポートされていないオペランド タイプ: 'NoneType' および 'NoneType'
このエラーを処理するにはどうすればよいですか?
また
私はそれが私に言っていることを理解しています(私は思う)ので、これは私がそれと戦うために書いたコードです
意見:
私がやっていることは、たまたま値として何も出てこなかった場合に、それらの値を合計する前に 0 に設定することだと考えました。これを処理する別の方法はありますか?それらのいずれかが表示されない場合、ゼロに設定されて追加できるようになります。また、両方がゼロになると、追加できるように 0 に設定できます。
python - Django で 2 つの注釈付き値の合計を実行する
次のように、2 つの新しいフィールド (project_count と member_count) を持つように、Student オブジェクトに注釈を付けました。
top_students = Student.objects.annotate(project_count= Count('project'), member_count = Count('member_student'))
これら 2 つの値の合計をデータベース レベルで実行したいと思います。つまり、次のようなものを返します。
次のように .extra() を使用してみました:
top_students = Student.objects.annotate(project_count= Count('project'), member_count = Count('member_student')).extra(
select = {'total_count': 'project_count + member_count'},
order_by = ('total_count', )
)
しかし、それはエラーを示しています:OperationalError: (1054, "Unknown column 'project_count' in 'field list'")
生のSQLを書くべきですか、それともこれを行う他の方法はありますか:
django - Django - get_FOO_display による集計
次の点を考慮してください。
status
フィールドはwithCharField
ですchoices
。これにより、status
DB 値とその数を含む辞書のリストが作成されます。
status
代わりに表示値を集計して表示する方法はありますか? おそらくエミュレートできるコードを調べましたが_get_FIELD_display
、フレームワークの内部コードを繰り返すのは少しハックな気がします。