PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Django ORM membandingkan tupel / pemesanan leksikografis

Di bawah ini adalah cara yang bekerja di Django pra 3.2, menggunakan annotate (yang sayangnya juga membutuhkan sedikit peretasan untuk menyetel output_field , meskipun nilainya tidak digunakan).

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

Di Django 3.2+ Anda tampaknya dapat menggunakan alias alih-alih annotate

Ini berfungsi karena apa yang disebut sebagai tuple, sebenarnya adalah singkatan dari Konstruktor Baris , yaitu (col_a, col_b) sama dengan ROW(col_a, col_b)

Di atas didasarkan pada informasi di tiket ini




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tidak bisa membuat sisipan PostgreSQL sederhana berfungsi

  2. Fungsi jendela SQL dengan klausa where?

  3. Cara memperbaiki kesalahan Kesalahan:Basis data tidak diinisialisasi dan kata sandi pengguna super tidak ditentukan.

  4. Bagaimana mengembalikan nilai dari suatu fungsi jika tidak ada nilai yang ditemukan

  5. Membuat Indeks Gin dengan Trigram (gin_trgm_ops) dalam model Django