Django __in minuscules
-
29-09-2019 - |
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"?
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)