2010-06-09 29 views
8

我的模型獲得的獨特的多對多條記錄列表:從查詢集

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

基本上是一個用戶創建一個訂單,並給出該訂單的原因。即約翰有兩個訂單(一個用於鉛筆,因爲他已經出門了,因爲他不喜歡他現在的庫存,另一個訂單是因爲他沒有出欄)。

我想打印出一個列表,其中列出了用戶下訂單的所有原因。所以在約翰的情況下,它應該打印出「他不在」,「他不喜歡他現有的股票」;只有這兩條線。如果我簡單地選擇所有約翰的命令,重複它們並打印出他們的「理由」,它會打印出「他不在」,「他不喜歡他現有的股票」,然後「他又出來了」。我不想要這些重複的值。

如何選擇所有訂單的理由清單,以便列表中包含所有唯一行?

回答

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