PostgreSQL
 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 django docs :

Странична бележка :използване на extra() може да въведе уязвимост при инжектиране на SQL към вашия код. Използвайте това с предпазливост и избягвайте всички параметри, които потребителят може да въведе. Сравнете с документи :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Конфигурирайте PHP и PostgreSQL в Windows

  2. Създаване на Django обект и Postgres последователности

  3. Postgresql вмъкване на тригер за задаване на стойност

  4. PostgreSQL еквивалент на подсказката NoLock на SQLServer

  5. Команда PostgreSql, за да видите данните от таблицата