sql >> Database teknologi >  >> RDS >> PostgreSQL

Django-forespørgselsfilter ved hjælp af et stort udvalg af id'er i Postgres DB

Jeg fandt en løsning, der bygger på @erwin-brandstetter-svaret ved hjælp af en tilpasset opslag

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

Dette gør det muligt at filtrere sådan her:

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


  1. Kan ikke slippe nøglen, selvom den eksisterer:Fejlkode:1091

  2. Sende variabler fra en PHP-side til en anden

  3. Nogen gode relationsdatabase tutorials?

  4. masseindsæt fra Java til Oracle