如何使用 Django 查询和 .count 进行算术运算?
How to do aritmethic operations with django queries and .count?
我想通过使用我在数据库中拥有的对象数量并对其进行操作然后在模板中显示结果来获取一个值(因此我在上下文中传递了这个值)。我找到的答案是关于对模型字段进行操作,但这对我没有帮助。
这就是我在视图中尝试做的。 (状态是一个带有选项的字符字段,但它可以是任何东西)
def get_context_data(self, **kwargs):
context = super(Index, self).get_context_data(**kwargs)
amount_one = mymodel.objects.filter(status='status1').count
amount_two = mymodel.objects.filter(status='status2').count
total_amount = amount_one + amount_two
result_amount = (amount_one * 100) // total_amount
context['result'] = result_amount
return context
这行不通,但您可以了解我正在尝试做什么。
您需要使用 .count()
而不是 .count
。
或者您可以使用 aggregate
和 Count
:
status1 = Count('status', filter=Q(status='status1'))
status2 = Count('status', filter=Q(status='status2'))
total_amount = sum(mymodel.objects.aggregate(status1=status1, status2=status2).values())
或者最简单的:
total_amount = mymodel.objects.filter(status__in=['status1', 'status2']).count()
使用方法 count()。你错过了括号。
amount_one = mymodel.objects.filter(status='status1').count()
我想通过使用我在数据库中拥有的对象数量并对其进行操作然后在模板中显示结果来获取一个值(因此我在上下文中传递了这个值)。我找到的答案是关于对模型字段进行操作,但这对我没有帮助。
这就是我在视图中尝试做的。 (状态是一个带有选项的字符字段,但它可以是任何东西)
def get_context_data(self, **kwargs):
context = super(Index, self).get_context_data(**kwargs)
amount_one = mymodel.objects.filter(status='status1').count
amount_two = mymodel.objects.filter(status='status2').count
total_amount = amount_one + amount_two
result_amount = (amount_one * 100) // total_amount
context['result'] = result_amount
return context
这行不通,但您可以了解我正在尝试做什么。
您需要使用 .count()
而不是 .count
。
或者您可以使用 aggregate
和 Count
:
status1 = Count('status', filter=Q(status='status1'))
status2 = Count('status', filter=Q(status='status2'))
total_amount = sum(mymodel.objects.aggregate(status1=status1, status2=status2).values())
或者最简单的:
total_amount = mymodel.objects.filter(status__in=['status1', 'status2']).count()
使用方法 count()。你错过了括号。
amount_one = mymodel.objects.filter(status='status1').count()