Pregunta

Estoy usando django-Taggit , que se ocupa de la fijación de etiquetas de tipos de contenido arbitrarias . Me importa una lista de etiquetas grande, que contiene muchas palabras en mayúsculas, así como las palabras en minúscula.

Ahora,' tratando de conseguir los objetos de otra clase que contiene un conjunto de etiquetas, pero quiero comparar caso insensible. Cuando hago esto:

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

objetos que contiene, por ejemplo, la etiqueta "Tag1" no se encuentran, sólo aquellos con "etiqueta 1" o "etiqueta 2".

¿Hay alguna posibilidad en el ORM de Django para hacer algo como:

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

que actúa como "icontains"?

¿Fue útil?

Solución

No hay manera fácil de hacerlo. No estoy 100% seguro, puede intentar algo como esto para su problema.

from django.models import Q

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

Media.objects.filter(q)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top