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

Filter kueri Django menggunakan array besar id di Postgres DB

Saya menemukan solusi yang dibangun berdasarkan jawaban @erwin-brandstetter menggunakan pencarian khusus

from django.db.models import Lookup
from django.db.models.fields import Field

@Field.register_lookup
class EfficientInLookup(Lookup):

    lookup_name = "ineff"

    def as_sql(self, compiler, connection):
        lhs, lhs_params = self.process_lhs(compiler, connection)
        rhs, rhs_params = self.process_rhs(compiler, connection)
        params = lhs_params + rhs_params
        return "%s IN (SELECT unnest(%s))" % (lhs, rhs), params

Ini memungkinkan untuk memfilter seperti ini:

MyModel.objects.filter(id__ineff=<list-of-values>)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan PostgreSQL:tidak dapat menerima data dari klien:Operasi dicoba pada sesuatu yang bukan soket

  2. Melarikan diri dari tanda kutip tunggal di shell untuk postgresql

  3. Cara mendapatkan kunci asing tabel anak memiliki nilai yang sama dengan kunci kenaikan otomatis utama induk

  4. kesalahan segmentasi pg.rb [Mojave upgrade]

  5. Postgres mengonversi tipe PATH ke ARRAY