sql >> Database teknologi >  >> RDS >> PostgreSQL

Timegruppering af rækker ved hjælp af Django

For at rette det skal du tilføje order_by() at forespørge kæde. Dette vil tilsidesætte modellens Meta-standardrækkefølge . Sådan:

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

I mit miljø ( Postgres også ):

>>> 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))

Få mere at vide i order_by django docs :

Sidebemærkning :ved hjælp af extra() kan introducere SQL-injektionssårbarhed til din kode. Brug dette med forsigtighed og undslip alle parametre, som brugeren kan indføre. Sammenlign med dokumenter :




  1. Mysql, Muligt indlejret kategoriproblem

  2. Laravel veltalende - Er der en måde at tilføje et tip før SELECT?

  3. Oprettelse af flere sider fra sql-forespørgsel

  4. MySql Indsæt hvis ikke eksisterer to kolonnepar ellers opdatere