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

Bộ lọc truy vấn Django sử dụng mảng id lớn trong Postgres DB

Tôi đã tìm thấy giải pháp xây dựng trên câu trả lời @ erwin-brandstetter bằng cách sử dụng tra cứu tùy chỉnh

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

Điều này cho phép lọc như thế này:

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. Làm thế nào để đọc JSON từ Cơ sở dữ liệu Doobie Scala PostgreSQL với Circe?

  2. Sự trừu tượng hóa cơ sở dữ liệu Java cho GWT (hoặc:Hibernate có phải là một lựa chọn tốt không?)

  3. Lỗi Rails + PostGIS khi di chuyển cơ sở dữ liệu

  4. Về hiệu suất bệnh lý

  5. Django ORM để lại các kết nối không hoạt động trên Postgres DB