問題タブ [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.

0 投票する
1 に答える
1489 参照

django - Django のネストされた注釈

私は3つのモデルを持っています

「関連付けられた」ModelCオブジェクトの数ですべてのModelAオブジェクトを印刷するにはどうすればよいですか?

出力:

私は次のように ModelA からクエリセットを作成しようとしました:

しかし、それは機能しません。

0 投票する
1 に答える
397 参照

python - Django 関連の _set with order_by の重複表示

Django 1.7 では、私の見解では次のコードを使用しています。

これを試すと、モデルの数に応じて、車の結果が重複します (たとえば、車 #3 の 2 倍)。私はこれをしたくありません。

ただし、を使用するcars = driver.car_set.all()と、重複した結果はありません。しかし、車のリストを で並べ替えたいと思いますmarket_date

これを修正する方法についての指針はありますか?私はaggregate()とdistinct()を試しましたが、残念ながら状況は解決しませんでした(または何か間違ったことをしています)。

私の試みdistinct()

  • driver.car_set.order_by('model__market_date').distinct()重複の原因
  • driver.car_set.order_by('model__market_date').distinct('model__market_date')重複の原因
  • driver.car_set.order_by('model__market_date').distinct('pk')収量Exception Value: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
0 投票する
1 に答える
44 参照

python - Django集計はUnicode文字列をエスケープしますか?

Unicode テキストを含むデータベースで集計を使用しようとしたところ、別の時間にエンコードされた Unicode 文字を含む Unicode オブジェクトが表示されました。集計後に Unicode テキストを表示するにはどうすればよいですか?

0 投票する
1 に答える
283 参照

mysql - Django 1.6 + MySQL : Cast MySQL 変数を入力して、Max、Avg を検索します

私のモデルは一種の

ここで、current_valueVarChar として格納された Float の値を表し、unixtime として格納された時刻について

の最大値と平均値を取得しようとしているcurrent_valueときに、予期しない結果が得られます。これは、Max の場合、MySQL が文字列ベースの比較を行うため、'100' value < '9.99'誤った wrt 値が Float で取得されるためです。

私は試した :

間違った結果を提供します。

次に見てください:mysqlでキャストvarcharからintに最小値を選択する方法

クエリセットを提供することを考えましたextra

しかし、これは単一の値を提供するだけであり、望ましい結果ではありません。これは、SQL に次のように変換されます。

オーダーperformance_utilizationstatusバイからperformance_utilizationstatussys_timestampDESC;

ただし、作業コードでは、(device_name、service_name、data_source) で GROUP BY が必要になります。

グループ化performance_utilizationstatusdevice_nameperformance_utilizationstatusservice_nameperformance_utilizationstatusdata_source オーダーバイperformance_utilizationstatussys_timestampDESC;

GROUP BY CLAUSE を追加する方法は?

ここでは使用annotateできません

1111, 'Invalid use of group function'

また

ERROR 1056 (42000): Can't group on 'max_val'

RAW SQL は最後の手段でしょうか?

0 投票する
1 に答える
1221 参照

django - 選択肢に対する Django 集約

次のモデルがあります。

これで、VotingRound のインスタンスができました。各値が何回表されたかを知りたいと思います。これは collections.Counter を介して簡単に実行できます。

Djangoの集計技術でこれを行う方法があるかどうか知りたい....

このモジュールを見つけましたが、使用する前に、それを行うネイティブな方法があるかどうかを知りたいと思いました。

0 投票する
6 に答える
89891 参照

python - Djangoでカウント注釈のオブジェクトをフィルタリングするには?

シンプルな Django モデルEventParticipant:

参加者の総数でイベント クエリに注釈を付けるのは簡単です。

でフィルタリングされた参加者の数で注釈を付ける方法はis_paid=True?

参加者の数に関係なく、すべてのイベントを照会する必要があります。たとえば、注釈付きの結果でフィルタリングする必要はありません。参加者がいれば0大丈夫0です。注釈付きの値が必要です。

ドキュメントの例は、オブジェクトに で注釈を付ける代わりにクエリからオブジェクトを除外するため、ここでは機能しません0

アップデート。Django 1.8 には新しい条件式機能があり、次のようにできるようになりました。

更新 2. Django 2.0 には新しい条件付き集計機能があります。以下の受け入れられた回答を参照してください。

Update 3. Django 3.x については、以下の回答を確認してください。

0 投票する
1 に答える
881 参照

sql - Django 注釈クエリの間違った GROUP BY フィールド

非常に厄介なサイクリングモデルの参照によって引き起こされた元の問題:

ここで、クエリに注釈を付けようとすると、常に a.id の代わりに LEFT OUTER JOIN の GROUP BY a の id (以下の例では T3.id ) が使用されます。

例:

生成された SQL:

私は次のことができることを知っています:

  1. サイクリング リファレンスを行わないようにモデルを変更します (残念ながら現在はできません)。
  2. 注釈の代わりに .extra() を使用できます (私はそれを避けようとします)
  3. .select_related() 呼び出しを削除 (パフォーマンスの問題により実行できません)

UPD: GROUP BY T3.idを使用すると結果が除外されます。ab == None

私にとって最善の解決策は、GROUP BY 句で正しいフィールドを指定することですが、その方法がわかりません。出来ますか?問題を解決する他の方法はありますか?ありがとう。