Frage

Ich bin mit django-taggit , die das Anbringen von Etiketten auf beliebige Inhaltstypen behandelt . Ich importiert eine große Tag-Liste, die viele Wörter in Großbuchstaben, sowie Klein Wörter enthält.

Nun, ich‘versuchen, Objekte einer anderen Klasse erhalten einen Satz von Tags enthält, aber ich will Fall unsensibel vergleichen. Wenn ich dies tun:

Media.objects.filter(tags__name__in=['tag1', 'tag2'])

Objekte zum Beispiel enthält der Tag "Tag1" nicht gefunden, nur die diejenigen mit "tag1" oder "tag2".

Gibt es eine Möglichkeit, in der django ORM so etwas wie zu tun:

Media.objects.filter(tags__name__iin=['tag1', 'tag2'])

, die wie "icontains" wirkt?

War es hilfreich?

Lösung

Es gibt keine einfache Möglichkeit, es zu tun. Ich bin nicht 100% sicher, Sie so etwas für Ihr Problem versuchen kann.

from django.models import Q

q = Q()
for tag in tags.split():
    q |= Q(tags__name__iexact=tag)

Media.objects.filter(q)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top