Hello,

Cherchant à rationnaliser différentes bases de codes, j'ai commencé à
migrer une app de gestion de marks en Flask/MongoDB vers Django/Postgres.
Comme il y a des tags aux marks, je ne me suis tourné vers django-taggit
mais je n'aurais peut être pas du.

En effet, lors d'une recherche multi tags, il fait du OR au lieu de AND et
sauf erreur, il ne sait pas le gérer. Avant que je désosse tout, je me suis
dit que la sagesse populaire de django-fr pourrait me remettre sur le bon
chemin.

Ex :

>>> from marks.models import Mark
>>> Mark.objects.filter(tag__name__in=['svg', 'xml']).count()
55
>>> Mark.objects.filter(tag__name__in=['svg']).count()
10
>>> Mark.objects.filter(tag__name__in=['xml']).count()
45
>>>
Mark.objects.filter(tag__name__exact='xml').filter(tag__name__exact='svg').count()
1

Ce qui est pratique avec le tag__name__in=<list>, c'est que je peux
justement lui passer une liste de 1 à n termes ; contrairement au dernier
exemple qui demande à ce que je sache le nombre de termes à filtrer.

Est-ce que quelqu'un sait comment je peux faire cette fichue requête pour
avoir un AND au lieu d'un OR ?

Une alternative à proposer ? J'espère ne surtout pas avoir à tomber dans du
raw sql ; ce serait indigne de django pout un besoin aussi simple ;-)

Merci d'avance,
NIcolas

-- 
Nicolas Steinmetz
http://www.steinmetz.fr - http://nicolas.steinmetz.fr/
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à