sql >> データベース >  >> RDS >> PostgreSQL

Djangoを使用した行の時間ごとのグループ化

    これを修正するには、order_by()を追加します クエリチェーンに。これにより、モデルのメタデフォルトの順序が上書きされます 。このように:

    Test
    .objects
    .extra({'hour': 'strftime("%%H", created_on)'})
    .order_by()                                        #<------ here
    .values('hour')
    .annotate(count=Count('id'))
    

    私の環境では(Postgresも):

    >>> print ( Material
             .objects
             .extra({'hour': 'strftime("%%H", data_creacio)'})
             .order_by()
             .values('hour')
             .annotate(count=Count('id'))
             .query )
    
      SELECT (strftime("%H", data_creacio)) AS "hour", 
             COUNT("material_material"."id") AS "count" 
        FROM "material_material" 
    GROUP BY (strftime("%H", data_creacio))
    

    詳細については、 order_by djangodocs をご覧ください。 :

    サイドノートextra()を使用する SQLインジェクションの脆弱性 が発生する可能性があります あなたのコードに。これは注意して使用し、ユーザーが導入できるパラメーターはすべてエスケープしてください。 docsと比較




    1. ゼロデータロスリカバリアプライアンス

    2. Dockerイメージはm1プロセッサで実行されます

    3. MySQLからjson配列にデータをプルする

    4. テーブルベースのレコードデータ型を持つ強力な参照カーソル