【问题标题】:Django admin aggregationDjango 管理员聚合
【发布时间】:2015-03-28 10:59:40
【问题描述】:

我正在使用Django管理存款,但我发现一个问题,有一个medel看起来像:

class Deposit(models.Model):
      user = models.ForeignKey(User) 
      money_re = models.DecimalField(max_digits=11, decimal_places=2)
      ...

我想在模型中添加一笔money_re到页面右下角的admin change_list页面。

有没有办法在管理 change_list 页面中使用模型聚合

欢迎任何有用的建议!

【问题讨论】:

    标签: python django admin aggregation


    【解决方案1】:

    覆盖 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 %}
    

    【讨论】:

      猜你喜欢
      • 2014-04-26
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      相关资源
      最近更新 更多