第44章 Django的分析图表之ModelAdmin,棒……

单有model,单有数据。如果想在页面上有一番作为的话,还需要在ModelAdmin中进行注册。注册完之后,可以重点注意两个重点,一是过滤器(list_filter)是可以自定义的,二是模板也是可以自定义的。

from django.contrib import admin
from .models import *
# 区域任务
@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
list_display = ('region', 'year', 'Jan_task', 'Feb_task', 'Mar_task', 'Apr_task', 'May_task', 'Jun_task',
'Jul_task', 'Aug_task', 'Sep_task', 'Oct_task', 'Nov_task', 'Dec_task', 'create_time')
list_display_links = ('region',)
search_fields = ('region',)
# 按id升序
ordering = ('id',)
# 分页显示,一页的数量
list_per_page = 10
exclude = ('create_time',)
# 顶部操作按钮
actions_on_top = True
fieldsets = [('填写区域名称和年份', {'fields': ['region', 'year']}),
('每个月份的任务目标(万元)', {'fields': ['Jan_task', 'Feb_task', 'Mar_task',
'Apr_task', 'May_task', 'Jun_task',
'Jul_task', 'Aug_task', 'Sep_task',
'Oct_task', 'Nov_task', 'Dec_task',
]}),
('每个月份的实际销售额(万元)', {'fields': ['Jan_sale', 'Feb_sale', 'Mar_sale',
'Apr_sale', 'May_sale', 'Jun_sale',
'Jul_sale', 'Aug_sale', 'Sep_sale',
'Oct_sale', 'Nov_sale', 'Dec_sale']})]
@admin.register(MyTask)
class MyTaskAdmin(admin.ModelAdmin):
pass
# 区域列表
class RegionListFilter(admin.SimpleListFilter):
title = '选择区域'
parameter_name = 'region'
def lookups(self, request, model_admin):
return Task.objects.distinct().values_list("region", "region")
def queryset(self, request, queryset):
pass
# 年份列表
class YearListFilter(admin.SimpleListFilter):
title = '选择年份'
parameter_name = 'year'
def lookups(self, request, model_admin):
year_list = []
years = Task.objects.distinct().values("year")
for result in years:
year_list.append((result['year'], '%d年' % result['year']))
return year_list
def queryset(self, request, queryset):
pass
# 销售统计
@admin.register(SaleSum)
class SaleSumAdmin(admin.ModelAdmin):
change_list_template = 'admin/sale_sum.html'
list_filter = (RegionListFilter, YearListFilter,)
def changelist_view(self, request, extra_context=None):
region = request.GET.get('region', '')
year = request.GET.get('year', '')
if region == '' or year == '':
task = ''
else:
task = Task.objects.filter(region=region, year=year).first()
if year != '':
year += '年'
extra_context = {'task': task, 'bar_title': region, 'subtext': year}
return super(SaleSumAdmin, self).changelist_view(request, extra_context=extra_context)

发布了21 篇原创文章 · 获赞 2 · 访问量 3076

猜你喜欢

转载自blog.csdn.net/a_faint_hope/article/details/103855098
今日推荐