Question

J'utilise django-Taggit , qui gère l'attachement des balises à des types de contenu arbitraires . J'ai importé une grande liste d'étiquettes, qui contient beaucoup de mots en majuscules, ainsi que des mots en minuscules.

Maintenant, je » essayer d'obtenir des objets d'une autre classe contenant un ensemble de balises, mais je veux comparer insensible à la casse. Quand je fais ceci:

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

objets contenant par exemple l'étiquette « Tag1 » ne sont pas trouvés, seulement ceux avec « balise1 » ou « tag2 ».

Est-il possible dans le django ORM faire quelque chose comme:

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

qui agit comme "icontains"?

Était-ce utile?

La solution

Il n'y a pas moyen facile de le faire. Je ne suis pas sûr à 100%, vous pouvez essayer quelque chose comme ça pour votre problème.

from django.models import Q

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

Media.objects.filter(q)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top