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

Django ORM so sánh bộ tuples / thứ tự từ vựng

Dưới đây là một cách hoạt động trong Django pre 3.2, sử dụng annotate (Rất tiếc, điều này cũng cần một chút hack khi đặt output_field , ngay cả khi giá trị không được sử dụng).

from django.db.models import F, Func, TextField

col_a_col_b = Func(F('col_a'), F('col_b'), function='ROW', output_type=TextField())
col_a_col_b_from = Func(col_a_value, col_b_value, function='ROW')

filtered_queryset = queryset \
    .annotate(col_a_col_b=col_a_col_b) \
    .filter(col_a_col_b__gt=col_a_col_b_from) \
    .order_by('col_a', 'col_b')

Trong Django 3.2+, bạn dường như có thể sử dụng alias thay vì annotate

Điều này hoạt động vì những gì được gọi là tuple, thực sự là viết tắt của Công cụ tạo hàng , tức là (col_a, col_b) giống với ROW(col_a, col_b)

Trên đây là dựa trên thông tin trong vé này




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại trừ các khoảng thời gian chồng chéo trong chức năng tổng hợp thời gian

  2. PostgreSQL / JDBC và TIMESTAMP so với TIMESTAMPTZ

  3. PostgreSQL - Cài đặt trình điều khiển JDBC

  4. regexp_matches cách tốt hơn để loại bỏ việc trả về dấu ngoặc nhọn

  5. Ràng buộc giá trị duy nhất trên nhiều cột