如何解决如何通过queryset获取每个对象的总和逐个对象
我没有“聚合”和“注释”的经验,并且与例子更好地交谈 我有这个对象:
mediasec = MediaSec.objects.filter(date__range=[primary1,primary2],degraycomany__in=degraycompsec)
如果我在将其转换为列表和循环后打印它,将得到此字典:
{'id': 5,'degraycomany_id': 5,'nomberhisas': 3,'date': datetime.date(2020,9,25)}
{'id': 8,'nomberhisas': 1,27)}
{'id': 9,27)}
{'id': 10,27)}
{'id': 13,28)}
{'id': 7,'degraycomany_id': 6,'nomberhisas': 2,27)}
{'id': 11,27)}
{'id': 6,'degraycomany_id': 7,27)}
{'id': 12,28)}
{'id': 14,28)}
{'id': 15,'degraycomany_id': 8,28)}
所以现在我想获取每个degraycomany_id的总和,因此我使用以下查询集:
test1 = MediaSec.objects.filter(date__range=[primary1,degraycomany__in=degraycompsec).aggregate(Sum("nomberhisas"))
热烈的来临:
{'nomberhisas__sum': 18}
我想要这样的结果:
{'id': 13,'nomberhisas': 9,28)}
{'id': 11,27)}
{'id': 14,'nomberhisas': 5,28)}
我想在每个'degraycomany_id'中获得'nomberhisas'的总和,而不是所有对象的总和
模型:
class MediaSec(models.Model):
degraycomany = models.ForeignKey(DegreyCompany,on_delete=models.CASCADE)
nomberhisas = models.SmallIntegerField()
date = models.DateField()
update_at = models.DateTimeField(auto_Now_add=True,blank=1,null=1)
created_at = models.DateTimeField(auto_Now_add=True)
class DegreyCompany(models.Model):
withdegrey = models.ForeignKey(Degrey,on_delete=models.CASCADE,null=True,blank=True)
company = models.ForeignKey(Secondary,blank=True)
spesial = models.ForeignKey('Spesial',blank=True)
name = models.CharField(max_length=200,default=withdegrey.name,blank=True)
nomberetud = models.PositiveSmallIntegerField(null=True,blank=True)
nomberexist = models.PositiveSmallIntegerField(null=True,blank=True)
femail = models.PositiveSmallIntegerField(null=True,blank=True)
reatrap = models.PositiveSmallIntegerField(null=True,blank=True)
解决方法
我尝试此查询集:
test1 = MediaSec.objects.filter(date__range=[primary1,primary2],degraycomany__in=degraycompsec).values('degraycomany_id').annotate(total_price=Sum('nomberhisas'))
干面包来了:
<QuerySet [{'degraycomany_id': 5,'total_price': 9},{'degraycomany_id': 6,'total_price': 3},{'degraycomany_id': 7,'total_price': 5},{'degraycomany_id': 8,'total_price': 1}]>
这离我想要的帮助很近
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。