0

タイトルの作成に苦労しましたので、よろしければ編集してください:)

pygooglechartを使用していくつかの統計を表示しようとしています。そして、私はDjangoを使用してデータベースからデータベースアイテムを取得しています。

データベースアイテムには、「並べ替え」たい日時フィールドがあります。私が本当に欲しいのは、このようなリストを作成することです。

data = [10, 12, 51, 50]

ここで、各リストアイテムは、1時間以内のデータベースアイテムの数(カウント)です。したがって、過去72時間のすべてのアイテムを取得するクエリを実行し、各時間のカウントをリストアイテムに収集するとします。誰かがこれを行うための良い方法がありますか?

4

2 に答える 2

2

Django 1.1またはかなり最近のチェックアウトを実行していると仮定すると、新しい集計機能を使用できます。何かのようなもの:

counts = MyModel.objects.values('datettimefield').annotate(Count('datettimefield'))

これにより、実際に辞書のリストが表示されます。

[{'datetimefield':<date1>, 'datettimefield__count':<count1>},
 {'datetimefield':<date2>, 'datettimefield__count':<count2>}, ...]

しかし、必要な形式を取得するためにリスト内包表記を書くのはかなり簡単なはずです。

コメント後に編集:1.0.2を使用している場合、最も効率的な方法は、生のSQLにフォールバックすることです。

cursor = connection.cursor()
cursor.execute(
     "SELECT COUNT(0) FROM `mymodel_table` "
     "GROUP BY `mydatetimefield`;"
)
counts = cursor.fetchall()
于 2009-08-20T08:25:01.897 に答える
0

djangoアグリゲーション

于 2009-08-20T00:30:58.483 に答える