2010-06-09 3 views
8

Mes modèles:Obtenir la liste des nombreux uniques à plusieurs enregistrements d'un QuerySet

class Order(models.Model): 
    ordered_by = models.ForeignKey(User) 
    reasons = models.ManyToManyField(Reason) 
class Reason(models.Model): 
    description = models.CharField() 

Fondamentalement, un utilisateur crée une commande et donne des raisons de cet ordre. Par exemple, John a deux commandes (une pour les crayons parce qu'il est sorti ET parce qu'il n'aime pas son stock actuel, une deuxième pour les stylos parce qu'il est sorti).

Je veux imprimer une liste pour toutes les raisons qu'un utilisateur a passé ses commandes. Donc sous john, il devrait imprimer "il est sorti", "il n'aime pas son stock actuel"; ces deux lignes seulement. Si je sélectionne simplement toutes les commandes de John, parcourez-les et imprimez leurs «raisons», il imprimera «il est sorti», «il n'aime pas son stock actuel» et ensuite «il est sorti» à nouveau. Je ne veux pas ces valeurs en double.

Comment puis-je sélectionner une liste de ses raisons pour TOUTES ses commandes afin que la liste ait toutes les lignes uniques?

Répondre

12
Reason.objects.filter(order__ordered_by=john).distinct() 
Questions connexes