django:多对多自定义关系中的聚合

时间:2012-10-16 14:35:17

标签: python orm django-models m2m

我有一个自定义的M2M关系,我需要从M2M表中获取聚合数据。这是我的两个模型:

class DonationHistory(models.Model):
    user                        = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    project                     = models.ForeignKey(Project, on_delete=models.SET_NULL, null=True)
    datetime_sent               = models.DateTimeField('date sent', default = datetime.now())
    needs                       = models.ManyToManyField(ProjectNeed, through='DonationHistoryNeeds')

class DonationHistoryNeeds(models.Model):
    donation_history            = models.ForeignKey(DonationHistory)
    need                        = models.ForeignKey(ProjectNeed, on_delete=models.SET_NULL, null=True) 
    amount                      = models.DecimalField(max_digits=6, decimal_places=2, default=0)

我省略了ProjectNeed模型,即M2M关系的另一端,只要我此刻不需要任何数据。所以,我需要的数据可以用这个SQL表示:

    SELECT SUM(amount) FROM DonationHistory INNER JOIN DonationHistoryNeeds ON donation_history=DonationHistory.id WHERE datetime_sent>='2012-10-01'

基本上 - 本月所有捐款的总和。但是我如何在Django ORM中执行此操作?无法在文档或谷歌中找到任何解决方案。

0 个答案:

没有答案