
Django
使用 Django 框架开发 Web 应用程序时,我们经常需要使用 Django-admin 命令行工具来管理项目。其中一个常见需求是在 Django admin 界面中添加带有总计的额外行。这样可以方便地展示某个字段的总计值,例如订单总金额或用户总数。在本文中,我们将介绍如何通过自定义 Django admin 模型管理类来实现这一功能。
案例代码:首先,我们需要创建一个 Django 项目并定义一个简单的模型。假设我们正在开发一个电子商务平台,需要管理商品的订单信息。我们可以定义一个 Order 模型来表示订单,其中包含了订单号、商品名称和金额等字段。Pythonfrom Django.db import modelsclass Order(models.Model): order_number = models.CharField(max_length=100) product_name = models.CharField(max_length=100) amount = models.DecimalField(max_digits=10, decimal_places=2)接下来,我们需要创建一个自定义的模型管理类来添加带有总计的额外行。这可以通过重写 Django admin 中的
get_queryset 方法来实现。我们可以在该方法中使用 annotate 函数来计算总计值,并将其添加到查询结果中。Pythonfrom Django.contrib import adminfrom Django.db.models import Sumclass OrderAdmin(admin.ModelAdmin): list_display = ('order_number', 'product_name', 'amount', 'Total_amount') def get_queryset(self, request): queryset = super().get_queryset(request) queryset = queryset.annotate(Total_amount=Sum('amount')) return queryset在上述代码中,我们通过在 list_display 中添加 Total_amount 字段来显示总计值。然后,我们重写了 get_queryset 方法来计算总计值。这样,我们就可以在 Django admin 界面中看到每个订单的总金额了。最后,我们需要将自定义的模型管理类注册到 Django admin 中,以便在 admin 界面中显示我们定义的 Order 模型。Pythonadmin.site.register(Order, OrderAdmin)现在,我们可以运行 Django 项目并访问 admin 界面来查看效果了。在订单列表中,我们将看到每个订单的总金额显示在额外的一列中,方便我们快速查看订单的总金额。通过自定义 Django admin 模型管理类,我们可以很方便地在 admin 界面中添加带有总计的额外行。这为我们展示某个字段的总计值提供了便利,可以更好地管理和分析数据。希望本文对你在使用 Django 开发 Web 应用程序时有所帮助!
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号