2011-08-05 21 views
0

我有一個記錄集,用於捕獲數據負載,即某人購買了多少次數據。django如果用戶出現多次,則將用戶從用戶中排除掉

我正在基於他們以前的購買的小型通知系統工作,如果他們已經購買了某個特定類別的東西,就會向他們發送電子郵件。

這可能是該用戶在該記錄集中出現不止一次,我想要做的最後一件事是在某一天通過向他們發送50或60封電子郵件來騷擾某人。

有沒有一種方法可以循環訪問數據,每個類別只能獲得一個用戶?

這裏是我有什麼

class Customer(models.Model): 
    user = models.ForeignKey(User) 
    product = models.ForeignKey(Product) 
    amount = models.PositiveIntegerField() 
    date_backed = models.DateTimeField(auto_now=True) 
    paypal_transaction_id = models.CharField(max_length=50) 
    message = models.CharField(max_length=255, blank=True, null=True) 

class Product(models.Model): 
    title = models.CharField(max_length=50) 
    .... 
    .... 
    .... 

這裏就是我此刻的

customers = Customer.objects.annotate(Count('user__id')).order_by() 

結果運行:

[<Customer: user1>, <Customer: user2>, <Customer: user1>, <Customer: user1>, <Customer: user1>, <Customer: john>, <Customer: user1>] 

回答

0

使用.distinct()方法。它將防止數據重複,因此所有用戶在查詢集中只會出現一次。

customers = Customer.objects.annotate(Count('user__id')).order_by().distinct() 
0

嘗試使用不同的:

customers = Customer.objects.annotate(Count('user__id')).distinct() 
+0

奇怪的,並不完全做的伎倆。 – ApPeL

+0

你能詳細說說'挺'嗎? –