使用django_filters过滤的查询集的字段总和

时间:2017-11-07 14:21:36

标签: python django django-filter

我有以下观点

class AuthorList(FilterView):
    model = Author
    filterset_class = AuthorFilter
    context_object_name = 'authors'

在模板中,其中一个字段为{{ author.value }},这是一个整数。

我想要做的是在模板中显示所有{{ author.value }}的总和,但是以动态的方式显示(如果使用了一些过滤器,则使用当前的Queryset更新总和)。

我尝试使用get_context_data添加额外的上下文,但我无法找到如何以动态方式制作它。

修改

试过这个,仍然无法正常工作:

    @property
    def get_sum_values(self):
        sum_values = self.objects.all().aggregate(Sum('value'))['value__sum']
        return sum_values

并在模板中:{{ authors.get_sum_values }}

我还尝试在属性中添加一个print语句,但没有显示,所以我猜这个函数甚至没有加载。

我的模特:

class Author(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True)
    value = models.IntegerField(null=True, blank=True)

1 个答案:

答案 0 :(得分:0)

您是否尝试过将模型中的总和作为一个函数?

@property
def wallet_amount_guests(self):

    data_payments = self.user.earnings_set.filter(transaction_type='g').aggregate(Sum('amount'))['amount__sum']

    if data_payments == None:
        data_payments = 0

    return data_payments

以上只是我之前使用过的一个例子。然后,您可以将html调用为blah.function_name