我有一个自定义的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中执行此操作?无法在文档或谷歌中找到任何解决方案。