[解決済み] Django: 日付によるグループ化 (日、月、年)
2022-11-19 21:17:14
質問
このようなシンプルなモデルを持っています。
class Order(models.Model):
created = model.DateTimeField(auto_now_add=True)
total = models.IntegerField() # monetary value
そして、月別の内訳を出力したい。
-
1ヶ月の売上高(
COUNT
) -
結合された値(
SUM
)
この問題を解決する最良の方法は何なのかわかりません。かなり恐ろしい外観の追加選択クエリをいくつか見ましたが、私の単純な考えでは、任意の開始年/月から開始して、現在の月に到達するまでカウントアップし、その月についてフィルタリングする単純なクエリを投げて、数字を反復する方がよいかもしれないと思います。より多くのデータベース作業 - より少ない開発者のストレス!
あなたにとって最も意味のあることは何ですか?データの簡単なテーブルを引き出す良い方法はありますか? それとも、私の汚い方法がおそらく最良のアイデアなのでしょうか?
私は Django 1.3 を使っています。より良い方法として
GROUP_BY
をうまく使えるようになったかどうかはわかりません。
どのように解決するのですか?
Django 1.10 以上
Django ドキュメントリスト
extra
として
まもなく廃止
. (ご指摘ありがとうございます @seddonym、@Lucas03)。私が開いたのは
チケット
を開き、これがjarshwahが提供した解決策です。
from django.db.models.functions import TruncMonth
from django.db.models import Count
Sales.objects
.annotate(month=TruncMonth('created')) # Truncate to month and add to select list
.values('month') # Group By month
.annotate(c=Count('id')) # Select the count of the grouping
.values('month', 'c') # (might be redundant, haven't tested) select month and count
古いバージョン
from django.db import connection
from django.db.models import Sum, Count
truncate_date = connection.ops.date_trunc_sql('month', 'created')
qs = Order.objects.extra({'month':truncate_date})
report = qs.values('month').annotate(Sum('total'), Count('pk')).order_by('month')
編集
- カウントを追加
- django >= 1.10 の情報を追加しました。
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
Django。"makemigrations "時に変更が検出されない。
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み]どのようにdjangoでGROUP BYとしてクエリを実行するには?
-
[解決済み] Django のモデルで電話番号を保存する最良の方法は何ですか?
-
[解決済み] Djangoテンプレート内でコレクションのサイズを確認するにはどうすればよいですか?
-
[解決済み] Django の DoesNotExist 例外はどのようにインポートしますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Djangoは、フォームを送信するときに403エラーに遭遇しました。CSRF 検証に失敗しました。
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
Django QuerySet マルチテーブル結合/条件付きピッキング/マージ
-
[解決済み] pipと要件ファイルを使って、特定のパッケージをアップグレードするにはどうすればよいですか?
-
[解決済み] FastCGIとDjangoを使用しているnginxのエラーログはどこで見ることができますか?
-
[解決済み] egg_infoエラーでpipからインストールできない
-
[解決済み] Djangoのクッキー、どうすれば設定できますか?
-
[解決済み] django-tastypie と djangorestframework の違いは何ですか?[クローズド]
-
[解決済み] Django admin: データベースフィールドを持たないカスタム list_display フィールドの1つでソートする方法
-
[解決済み] Django の DoesNotExist 例外はどのようにインポートしますか?