Unfortunatley gibt es kein__iin
Feld Lookup. Aber es gibt eine iregex
die nützlich sein könnten, etwa so:
result = Name.objects.filter(name__iregex=r'(name1|name2|name3)')
oder sogar:
a = ['name1', 'name2', 'name3']
result = Name.objects.filter(name__iregex=r'(' + '|'.join(a) + ')')
Beachten Sie, dass, wenn ein Zeichen enthalten, die in einem regex speziell sind, müssen Sie sie richtig escape .
NEWS: In Djano 1.7 ist es möglich, eigene Lookups zu erstellen, so dass Sie nach korrekter Initialisierung tatsächlich filter(name__iin=['name1', 'name2', 'name3'])
verwenden können. Einzelheiten finden Sie unter https://docs.djangoproject.com/en/1.7/ref/models/lookups/.
Postgres unterstützt Groß- und Kleinschreibung Indizes, so für diesen Fall mit schneller sein kann separate „iexact“ Abfragen für jedes Element als ein iregex Spiel laufen zu lassen. In Djangos Postgres-Backend verwendet die "iexact" -Suche eine UPPER() -Transformation, also mit einem benutzerdefinierten Index auf UPPER() für diese Zeile ist es möglich, eine Beschleunigung zu erhalten. – Evgeny
Ich wünschte, sie würden __iin – JREAM
@Evgeny implementieren Ich wünschte, Sie könnten eine Antwort hinzufügen, oder geben Sie uns einen Link. Vielen Dank! –