問題タブ [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 - Django のネストされた注釈
私は3つのモデルを持っています
「関連付けられた」ModelCオブジェクトの数ですべてのModelAオブジェクトを印刷するにはどうすればよいですか?
出力:
私は次のように ModelA からクエリセットを作成しようとしました:
しかし、それは機能しません。
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
python - Django集計はUnicode文字列をエスケープしますか?
Unicode テキストを含むデータベースで集計を使用しようとしたところ、別の時間にエンコードされた Unicode 文字を含む Unicode オブジェクトが表示されました。集計後に Unicode テキストを表示するにはどうすればよいですか?
mysql - Django 1.6 + MySQL : Cast MySQL 変数を入力して、Max、Avg を検索します
私のモデルは一種の
ここで、current_value
VarChar として格納された Float の値を表し、unixtime として格納された時刻について
の最大値と平均値を取得しようとしているcurrent_value
ときに、予期しない結果が得られます。これは、Max の場合、MySQL が文字列ベースの比較を行うため、'100' value < '9.99'
誤った wrt 値が Float で取得されるためです。
私は試した :
間違った結果を提供します。
次に見てください:mysqlでキャストvarcharからintに最小値を選択する方法
クエリセットを提供することを考えましたextra
しかし、これは単一の値を提供するだけであり、望ましい結果ではありません。これは、SQL に次のように変換されます。
オーダーperformance_utilizationstatus
バイからperformance_utilizationstatus
。sys_timestamp
DESC;
ただし、作業コードでは、(device_name、service_name、data_source) で GROUP BY が必要になります。
グループ化performance_utilizationstatus
。device_name
、performance_utilizationstatus
。service_name
、
performance_utilizationstatus
。data_source
オーダーバイperformance_utilizationstatus
。sys_timestamp
DESC;
GROUP BY CLAUSE を追加する方法は?
ここでは使用annotate
できません
1111, 'Invalid use of group function'
また
ERROR 1056 (42000): Can't group on 'max_val'
RAW SQL は最後の手段でしょうか?
django - 選択肢に対する Django 集約
次のモデルがあります。
これで、VotingRound のインスタンスができました。各値が何回表されたかを知りたいと思います。これは collections.Counter を介して簡単に実行できます。
Djangoの集計技術でこれを行う方法があるかどうか知りたい....
このモジュールを見つけましたが、使用する前に、それを行うネイティブな方法があるかどうかを知りたいと思いました。
python - Djangoでカウント注釈のオブジェクトをフィルタリングするには?
シンプルな Django モデルEvent
とParticipant
:
参加者の総数でイベント クエリに注釈を付けるのは簡単です。
でフィルタリングされた参加者の数で注釈を付ける方法はis_paid=True
?
参加者の数に関係なく、すべてのイベントを照会する必要があります。たとえば、注釈付きの結果でフィルタリングする必要はありません。参加者がいれば0
大丈夫0
です。注釈付きの値が必要です。
ドキュメントの例は、オブジェクトに で注釈を付ける代わりにクエリからオブジェクトを除外するため、ここでは機能しません0
。
アップデート。Django 1.8 には新しい条件式機能があり、次のようにできるようになりました。
更新 2. Django 2.0 には新しい条件付き集計機能があります。以下の受け入れられた回答を参照してください。
Update 3. Django 3.x については、以下の回答を確認してください。
sql - Django 注釈クエリの間違った GROUP BY フィールド
非常に厄介なサイクリングモデルの参照によって引き起こされた元の問題:
ここで、クエリに注釈を付けようとすると、常に a.id の代わりに LEFT OUTER JOIN の GROUP BY a の id (以下の例では T3.id ) が使用されます。
例:
生成された SQL:
私は次のことができることを知っています:
- サイクリング リファレンスを行わないようにモデルを変更します (残念ながら現在はできません)。
- 注釈の代わりに .extra() を使用できます (私はそれを避けようとします)
- .select_related() 呼び出しを削除 (パフォーマンスの問題により実行できません)
UPD: GROUP BY T3.idを使用すると結果が除外されます。ab == None
私にとって最善の解決策は、GROUP BY 句で正しいフィールドを指定することですが、その方法がわかりません。出来ますか?問題を解決する他の方法はありますか?ありがとう。