微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过q​​ueryset获取每个对象的总和逐个对象

如何解决如何通过q​​ueryset获取每个对象的总和逐个对象

我没有“聚合”和“注释”的经验,并且与例子更好地交谈 我有这个对象:

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 举报,一经查实,本站将立刻删除。