我有三个模型——客户、服务和用途。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