PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Nhóm các hàng hàng giờ bằng Django

Để khắc phục, hãy nối thêm order_by() để truy vấn chuỗi. Điều này sẽ ghi đè thứ tự mặc định Meta của mô hình . Như thế này:

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

Trong môi trường của tôi (cả 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))

Tìm hiểu thêm trong order_by django docs :

Ghi chú bên lề :using extra() có thể giới thiệu lỗ hổng chèn SQL mã của bạn. Sử dụng điều này một cách thận trọng và thoát khỏi bất kỳ thông số nào mà người dùng có thể giới thiệu. So sánh với tài liệu :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lumen - Tạo kết nối cơ sở dữ liệu trong thời gian chạy

  2. SQLAlchemy xác minh kết nối SSL

  3. Điểm chuẩn Postgres-XL

  4. Chuyển đổi ký tự Unicode thoát trở lại ký tự thực trong PostgreSQL

  5. Docker container tắt do lỗi 'thư mục dữ liệu có quyền sở hữu sai' khi được thực thi trong windows 10