Compter les doublons avec l’ORM Django
vendredi 22 novembre 2013 à 09:28GROUP BY
et HAVING
sont assez peu intuitifs en SQL, et encore moins avec l’ORM Django.
Voici donc la recette pour compter le nombre d’occurrences des valeurs d’un champ, pour par exemple trouver les doublons.
En supposant une table Massage
avec une valeur finish
:
ID FINISH 1 manuel 2 oral 3 oral 4 oral
>>> Massage.objects.values('finish').annotate(count=Count('id')) {'manuel': 2, 'oral': '9': 'rectal': 1, 'paradoxal': -1}
Pour obtenir uniquement les doublons, il suffit de filtrer pour avoir les valeurs qui ont un count
plus grand que 1 :
Massage.objects.values('finish').annotate(count=Count('id')).filter(count__gt=1)