Python 使用django_筛选器筛选的queryset的字段总和
我有以下看法Python 使用django_筛选器筛选的queryset的字段总和,python,django,django-filter,Python,Django,Django Filter,我有以下看法 class AuthorList(FilterView): model = Author filterset_class = AuthorFilter context_object_name = 'authors' 在模板中,其中一个字段是{{author.value}},它是一个整数 我想做的是在我的模板中显示所有{{author.value}}的总和,但要以动态方式显示(如果使用了一些过滤器,那么总和将使用当前查询集更新) 我曾尝试使用get\u co
class AuthorList(FilterView):
model = Author
filterset_class = AuthorFilter
context_object_name = 'authors'
在模板中,其中一个字段是{{author.value}}
,它是一个整数
我想做的是在我的模板中显示所有{{author.value}}
的总和,但要以动态方式显示(如果使用了一些过滤器,那么总和将使用当前查询集更新)
我曾尝试使用get\u context\u data
添加额外的上下文,但我不知道如何以动态方式创建它
编辑
已尝试此操作,但仍不起作用:
@property
def get_sum_values(self):
sum_values = self.objects.all().aggregate(Sum('value'))['value__sum']
return sum_values
在模板中:{{authors.get\u sum\u values}
我还尝试在属性中添加一个print语句,但没有显示任何内容,因此我猜函数甚至没有加载
我的模型:
class Author(models.Model):
name = models.CharField(max_length=50, blank=True, null=True)
value = models.IntegerField(null=True, blank=True)
你试过在模型中求和作为函数吗
@属性
def钱包\金额\客人(自助):
数据支付=self.user.earnings\u set.filter(交易类型='g').aggregate(总和('amount'))['amount\u总和']
如果数据=无:
数据=0
返回付款数据
以上只是我以前使用过的一个例子。然后您可以以blah.function\u name的形式调用html。您是否尝试过在模型中作为函数进行求和
@属性
def钱包\金额\客人(自助):
数据支付=self.user.earnings\u set.filter(交易类型='g').aggregate(总和('amount'))['amount\u总和']
如果数据=无:
数据=0
返回付款数据
以上只是我以前使用过的一个例子。然后,您可以以blah.function_name的形式调用html。谢谢,我已经根据您的建议编辑了我的帖子,但模板中没有显示任何内容,您能明白原因吗?请给我看一下您的模型吗?尝试以下操作:@property def get_sum_values(self):sum_values=self.author_set.all().aggregate(sum('value'))['value_sum']return sum\u values同样:@property def get\u sum\u values(self):sum\u values=self.user.author\u set.all().aggregate(sum('value'))['value\u sum\u sum']return sum\u values hanks,我根据你的建议编辑了我的帖子,但模板中没有显示任何内容,你能明白为什么吗?请给我看看你的模型吗?试试下面的:@property def get\u sum\u values(self):sum_values=self.author_set.all().aggregate(sum('value'))['value_sum']返回sum_值也:@property def get_sum_values(self):sum_values=self.user.author_set.all().aggregate(sum('value'))['value_sum']返回总和值如果我没有弄错,从
get\u sum\u values
中的self
可以到达没有对象
属性的模型实例。您可以尝试在视图的get\u context\u data()
中使用a。是的,这是我首先尝试的,但我有Author.objects.all().aggregate(总和('value'))['value\uuuu sum']
,这不是动态的(总和没有更新为筛选的作者)。您应该发布一些代码,以明确如何筛选作者,以及“动态”是什么意思。也就是说,根据您提供的代码,您应该显示您与想要得到的结果相处的结果。我发现从这个链接使用qs很有帮助:如果我没有弄错的话,从get\u sum\u values
中的self
可以到达没有对象
属性的模型实例。您可以尝试在Author.objects.all().aggregate(Sum('value'))['value\uu Sum']
,这不是动态的(在过滤的地方,Sum没有更新为作者)。您应该发布一些代码,以明确作者是如何过滤的,以及“动态”是什么意思。也就是说,根据您提供的代码,您应该显示您所获得的结果以及您想要获得的结果。我发现使用此链接中的qs很有帮助: