Django注释一对多模型中某个字段的和

2024-05-16 18:39:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到所有销售项目的总收入,但我不知道如何做到这一点

这是我的models.py(简化版,但保留了所有必要的部分)

class Quotation(models.Model):

    decisions = (
        ('approved', 'Approved'),
        ('rejected', 'Rejected'),
        ('pending', 'Pending'),
    )

    quotation_id = models.AutoField(primary_key=True)
    salesProject = models.ForeignKey('SalesProject' ,related_name='quotations', on_delete=models.CASCADE)
    quotation = models.MoneyField(max_digits=10, decimal_places=2)
    decision = models.CharField(max_length = 20, choices = decisions, default='pending')

class SalesProject(models.Model):

    sales_project_id = models.AutoField(primary_key=True)
    sales_project_name = models.CharField(max_length=100)
    sales_project_est_rev  = MoneyField(max_digits=10, decimal_places=2)

我要做的是获取与同一SalesProject实例关联的报价模型下所有“报价”字段的总和。有没有办法做到这一点

我的理想输出是这样的(实际收入是与特定销售项目相关的所有报价的总和)

[{ sales_project_id: 1, sales_project_name: 'Test Project', sales_project_est_rev: 200000, actual_revenue: 150000}, {...}, ...]

感谢所有的帮助,谢谢大家


Tags: 项目nameprojectidmodelmodelsmaxclass