PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

order_by sur le champ plusieurs à plusieurs entraîne des entrées en double dans le jeu de requêtes

J'ai suivi les suggestions fournies par sfletche sur l'utilisation de l'annotation et j'ai discuté du problème dans le canal irc freenode.net #django.

Les utilisateurs FunkyBob et jtiai ont pu m'aider à le faire fonctionner.

Puisqu'il peut y avoir de nombreux rendez-vous pour chaque bon de travail, lorsque nous lui demandons de commander par rendez-vous, il renverra une ligne pour chaque instance de rendez-vous car il ne sait pas par quel rendez-vous je voulais qu'il commande.

from django.db.models import Max

WorkOrder.objects.annotate(max_date=Max('appointment__start')).filter(work_order_status="complete").order_by('max_date')

Donc, nous étions sur la bonne voie, il s'agissait simplement d'obtenir la syntaxe correcte.

Merci pour l'aide sfletche, FunkyBob et jtiai.