2010-06-09 3 views
8

I miei modelli:Ottenere elenco di unici molti-a-molti record da un set di query

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

Fondamentalmente un utente crea un ordine e dà ragioni per questo ordine. cioè, john ha due ordini (uno per le matite perché è fuori E perché non gli piace il suo attuale stock. un secondo ordine per le penne perché è fuori).

Desidero stampare un elenco per tutti i motivi per cui un utente ha effettuato i suoi ordini. Quindi, sotto john, dovrebbe stampare "è fuori", "non gli piace il suo attuale stock"; solo quelle due linee. Se seleziono semplicemente tutti gli ordini di john, eseguo l'iterazione e stampano le loro "ragioni" che stamperanno "è fuori", "non gli piace il suo attuale stock" e poi "è fuori" di nuovo. Non voglio questi valori duplicati.

Come faccio a selezionare un elenco dei suoi motivi per TUTTI i suoi ordini in modo che l'elenco abbia tutte le righe univoche?

risposta

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