我有一个记录集可以捕获大量数据,即有人购买了多少次数据。
我正在开发一个基于之前购买的小型通知系统,如果他们购买了特定类别的商品,就会向他们发送电子邮件。
可能是这个用户在该记录集中不止一次出现,我想做的最后一件事就是在一天内向他们发送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 :(得分:0)
使用.distinct()方法。它将阻止数据重复,因此所有用户在查询集中只会出现一次。
customers = Customer.objects.annotate(Count('user__id')).order_by().distinct()
答案 1 :(得分:0)
尝试使用distinct:
customers = Customer.objects.annotate(Count('user__id')).distinct()