Django:如何在temp中显示模型字段的和

2024-05-18 15:47:12 发布

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

我建立了以下模型:

class Fund(models.Model):
    name = models.CharField(max_length=30)
    gp = models.ForeignKey(GeneralPartner, on_delete = models.CASCADE)
    currency = models.CharField(max_length=3, default="")
    commitment = models.IntegerField(default=0)


    def __str__(self):
        return self.name

    @property
    def sum_commitment(self):
        return self.commitment

我想通过模板中的一个简单的{{ fund.sum_commitment }}标记显示模板中所有承诺的总和。为了实现这个目标,我的回报声明应该是什么样子的?我尝试过类似于return self.sum(commitment)的方法,但是没有找到正确的解决方案。在

非常感谢您的帮助!在


Tags: name模型self模板defaultreturnmodelsdef
1条回答
网友
1楼 · 发布于 2024-05-18 15:47:12

我想你可以用Aggregate这样做:

from django.db.models import Sum

@property
def sum_commitment(self):
    return self.__class__.objects.all().aggregate(sum_all=Sum('commitment')).get('sum_all')

更新

根据注释,我假设您使用的是ListView,那么您可以简单地向get_context_data添加另一个变量来添加承诺的总和。例如:

^{pr2}$

然后通过{{ commitment_sum }}访问模板中的值。在

另外,您可能需要多次重用此代码,然后可以使用class method,而不是像这样的属性方法:

@classmethod
def sum_commitment(cls):
    return cls.objects.all().aggregate(sum_all=Sum('commitment')).get('sum_all')

在视图中使用它:

context['commitment_sum'] = Fund.sum_commitment()

相关问题 更多 >

    热门问题