2011-08-05 3 views
0

データのロード、つまり何か購入した回数を取得したレコードセットがあります。djangoは複数回表示された場合にクエリーセットからユーザを削除します

私は、特定のカテゴリで何かを購入した場合に電子メールを送信する以前の購入に基づいて、小さな通知システムに取り組んでいます。

このユーザーがそのレコードセットに複数回出現する可能性があり、最後にやりたいことは、ある日に50または60の電子メールを送信することによって迷惑をかけることです。

データを循環させてカテゴリごとに1人のユーザーしか取得できない方法はありますか?ここで

は、私がここで

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() 

結果、現時点では私が実行しているものです:.distinct

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

答えて

0

使用()方法。それはデータの重複を防ぐので、すべてのユーザーはクエリーセットで一度だけ表示されます。

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

の異なる使用してみてください:

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

奇妙な、非常にトリックを行いません。 – ApPeL

+0

あなたは 'かなり'精緻化できますか? –

関連する問題