PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Filtr zapytań Django używający dużej liczby identyfikatorów w Postgres DB

Znalazłem rozwiązanie oparte na odpowiedzi @erwin-brandstetter przy użyciu niestandardowe wyszukiwanie

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

Pozwala to na filtrowanie w następujący sposób:

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. Funkcja Postgresql nie zwraca tabeli po wybraniu

  2. Razem... z niespodzianką

  3. Pobieranie najpopularniejszych słów kluczowych z kolumny tsvector

  4. Postgres:BŁĄD:plan w pamięci podręcznej nie może zmieniać typu wyniku

  5. Zamykanie połączenia klienta postgres (pg) w node.js