在django模型中查找一组唯一条目的计数时需要帮助



我有三个模型——客户、服务和用途。Uses模型包含客户使用的customer_id和service_id(服务(。

现在,我想要的是一份客户使用每种不同服务的次数列表。例如,如果服务说游泳池和自助餐被使用了一两次,我希望答案是[1,2]。我不希望使用不同服务的计数,而是希望每个特定服务的计数。

这是我的型号

class Customer(models.Model):
firstname = models.CharField(max_length=15)
lastname = models.CharField(max_length=15)
#other attributes
class Services(models.Model):
service_name = models.CharField(max_length=15)
price = models.IntegerField()
class Uses(models.Model):
customer = models.ForeignKey(Customer,on_delete=CASCADE)
service_id = models.ForeignKey(Services,on_delete=CASCADE)
time_used = models.TimeField(default=timezone.localtime())

这就是我所得到的,它返回所使用的不同服务。

count=Uses.objects.filter(customer_id=customer).values('customer_id','service_id').distinct().count()

需要一些帮助,请修改。

您可以.annotate(…)Services对象:

from django.db.models importCount
Services.objects.filter(
uses__customer=customer
).annotate(
times_used=Count('uses')
)

此查询集产生的Services将具有一个额外的属性times_used,该属性将计算customer使用该服务的次数。


注意:通常Django模型被赋予单数名称,因此Service而不是Services

相关内容

最新更新