Django 管理聚合
Django admin aggregation
我正在使用Django来管理存款,但是我发现了一个问题,有一个medel看起来像:
class Deposit(models.Model):
user = models.ForeignKey(User)
money_re = models.DecimalField(max_digits=11, decimal_places=2)
...
我想在页面右下角的管理change_list页面添加模型中money_re的总和
有没有办法在管理change_list页面中使用模型聚合
欢迎任何有用的建议!
覆盖 ModelAdmin.changelist_view()
并用所需数据填充上下文:
from django.db.models import Sum
class DepositAdmin(admin.ModelAdmin):
def changelist_view(self, request, extra_context=None):
aggregates = Deposit.objects.aggregate(Sum('money_re'))
context = {'total_deposit': aggregates['money_re__sum']}
if extra_context:
context.update(extra_context)
return super(DepositAdmin, self).changelist_view(request, context)
然后创建模板 admin/<appname>/deposit/change_list.html
并在结果列表后显示此数据:
{% extends 'admin/change_list.html' %}
{% block result_list %}
{{ block.super }}
<div style="text-align: right; padding: 10px">
Total deposit: <b>{{ total_deposit }}</b>
</div>
{% endblock %}
我正在使用Django来管理存款,但是我发现了一个问题,有一个medel看起来像:
class Deposit(models.Model):
user = models.ForeignKey(User)
money_re = models.DecimalField(max_digits=11, decimal_places=2)
...
我想在页面右下角的管理change_list页面添加模型中money_re的总和
有没有办法在管理change_list页面中使用模型聚合
欢迎任何有用的建议!
覆盖 ModelAdmin.changelist_view()
并用所需数据填充上下文:
from django.db.models import Sum
class DepositAdmin(admin.ModelAdmin):
def changelist_view(self, request, extra_context=None):
aggregates = Deposit.objects.aggregate(Sum('money_re'))
context = {'total_deposit': aggregates['money_re__sum']}
if extra_context:
context.update(extra_context)
return super(DepositAdmin, self).changelist_view(request, context)
然后创建模板 admin/<appname>/deposit/change_list.html
并在结果列表后显示此数据:
{% extends 'admin/change_list.html' %}
{% block result_list %}
{{ block.super }}
<div style="text-align: right; padding: 10px">
Total deposit: <b>{{ total_deposit }}</b>
</div>
{% endblock %}