0
点赞
收藏
分享

微信扫一扫

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化

zmhc 2022-10-18 阅读 144


一、前言

对admin管理后台里的列表展示页面的数据展示进行相关优化的目的:更加方便我们对列表展示页面里的数据进行操作!

问题:那么,我们如何对admin管理后台里的列表展示页面的数据展示进行相关优化呢?

答案:我们对指定父类里的相关属性值进行重写,就能实现对admin管理后台里的列表展示页面的数据展示进行优化;

具体实现可以看接下来完整的操作流程;

细节:

①.操作流程的全程都是拿表animal当测试数据;


二、完整的操作步骤

1、第一步:查看ModelAdmin类和BaseModelAdmin类的源码

细节:

①.ModelAdmin类是BaseModelAdmin类的子类;

②.假如一个父类A里有一个属性A1,类B是父类A的子类,类C是类B的子类,那么在类C里可以对属性A1的值进行重写;

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化_字段

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化_数据_02

class ModelAdmin(BaseModelAdmin):

"""Encapsulate all admin options and functionality for a given model."""



list_display = ('__str__',) # 显示在列表展示页面的表字段的集合;数据类型为元祖;

list_display_links = () # 在列表展示页面里的可被点击且点击后能跳转到数据详情页的表字段的集合;数据类型为元祖;

list_filter = () # 被过滤的表字段的集合;数据类型为元祖;

list_select_related = False

list_per_page = 100 # 在列表展示页面里,每个分页最多展示100条数据;数据类型为int;

list_max_show_all = 200

list_editable = () # 在列表展示页面里,表字段值可以被编辑的表字段的集合;数据类型为元祖;

search_fields = () # 在列表展示页面里,表字段值可以被当做搜索条件的表字段的集合;数据类型为元祖;

date_hierarchy = None # 在列表展示页面里,任意一个值是时间类型的表字段可以被当做时间分层的筛选条件,一般比如用表字段create_time;数据类型为字符串;

save_as = False

save_as_continue = True

save_on_top = False

paginator = Paginator

preserve_filters = True

inlines = []

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化_数据_03

class BaseModelAdmin(metaclass=forms.MediaDefiningClass):

"""Functionality common to both ModelAdmin and InlineAdmin."""



autocomplete_fields = ()

raw_id_fields = ()

fields = None

exclude = None

fieldsets = None

form = forms.ModelForm

filter_vertical = ()

filter_horizontal = ()

radio_fields = {}

prepopulated_fields = {}

formfield_overrides = {}

readonly_fields = ()

ordering = None # 在列表展示页面里,任意一至多个表字段的表字段值可以被当做排序条件,一般比如用表字段create_time;数据类型为元祖;

# (如果【ordering = ("-create_time")】:表示数据按照创建时间倒序排序;如果【ordering = ("create_time")】:表示数据按照创建时间正序排序; )

sortable_by = None

view_on_site = True

show_full_result_count = True

checks_class = BaseModelAdminChecks

 

2、第二步,新建一个animal表

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化_数据类型_04

相关代码:

class Animal(models.Model):

name = models.CharField(max_length=30) # 后续会对应生成一个字段name

age = models.IntegerField() # 后续会对应生成一个表字段age

create_time = models.DateTimeField(auto_now_add=True) # 创建时间

 

3、第三步:对表animal对应的列表展示页面的数据展示进行相关优化

class ControlAnimal(admin.ModelAdmin):

list_display = ("id","name","age","create_time")

list_display_links = ("id","name",)

list_filter = ("name","create_time")

list_per_page = 11

list_editable = ("age",) # 注意:表字段id因为是主键且由于主键不允许被编辑,所以表字段id不能添加到 list_editable里面,否则会报错;

search_fields = ("name","age")

date_hierarchy = "create_time"

ordering = ("-create_time",)



admin.site.register(models.animal,ControlAnimal)

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化_数据_05


2.4.第四步:重启服务

2.5.第五步:退出登录并再次成功登陆admin管理后台

2.6.第六步:查看表animal对应的列表展示页面最新的数据展示

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化_数据_06


3.调试过程中相关报错信息的解决方案

①.解决方案:

根据报错日志(报错日志都是英文),复制报错日志里核心的报错文案进行如下处理:1.可以复制到百度进行查找对应答案,然后去改对应的错误代码块;2.或者可以按照报错文案进行自我理解,然后去改对应的错误代码块;

②.实际案例如下:

django之二十七--admin管理后台里:对列表展示页面的数据展示进行相关优化_数据类型_07


 

 

举报
0 条评论