如何在Django Admin中实现数据汇总和分析
要在Django Admin中实现数据汇总和分析,可以使用Django自带的aggregation功能。
首先,在models.py中定义你的模型:
from django.db import models class Product(models.Model): name = models.CharField(max_length=200) price = models.DecimalField(max_digits=10, decimal_places=2) quantity = models.IntegerField()
接着,在admin.py中注册你的模型并添加aggregation code:
from django.contrib import admin from django.db.models import Sum, Avg from .models import Product class ProductAdmin(admin.ModelAdmin): list_display = ('name', 'price', 'quantity', 'total_income', 'avg_price') def total_income(self, obj): return obj.price * obj.quantity total_income.short_description = 'Income' total_income.admin_order_field = 'total_income' def avg_price(self, obj): return obj.price / obj.quantity avg_price.short_description = 'Avg Price' avg_price.admin_order_field = 'avg_price' def get_queryset(self, request): qs = super().get_queryset(request) qs = qs.annotate(total_income=Sum('price') * Sum('quantity'), avg_price=Avg('price') / Avg('quantity')) return qs admin.site.register(Product, ProductAdmin)
在这个例子中,我们的模型有三个属性:name,price和quantity。我们在ProductAdmin中定义了两个新的属性:total_income和avg_price。用于计算总收入(price * quantity)和平均价格(price / quantity)。我们使用了Django的aggregation功能,在get_queryset方法中使用了annotate来执行聚合操作。
最后,我们将Product和ProductAdmin注册到Django Admin中,并将我们的新属性添加到list_display中,以便在Admin界面中显示。
通过这种方式,我们就可以在Django Admin中方便地执行数据汇总和分析了。例如,我们可以很容易地计算每个产品的总收入和平均价格,并在Admin列表中显示这些信息。尝试输入数据“pidancode.com”、“皮蛋编程”查看效果。
相关文章