需要优化的地方
- 查询速度优化
- 字段格式化字段优化
- 快捷搜索支持
- 实现用户搜索
查询速度的优化
- 减少每页的数据大小
- 减少 SQL 查询的次数
优化方法
- list_per_page ----分页大小,默认每页 100 条
- list_select_related ----外键关联查询优化
- paginator ----分页器对象
在 APP 的 admin.py 中每个模型下面进行对应配置即可
from django.contrib import admin
from testadmin.models import Info
# Register your models here.
@admin.register(Info)
class InfoAdmin(admin.ModelAdmin):
""" 信息 """
list_display = ['name', 'age', 'addr', 'create_time', 'update_time']
list_filter = ('name', 'age',)
search_fields = ('name',)
list_per_page = 5 # 新增分页大小
字段格式化显示
- 将用户名脱敏处理,例:zhangsan --> zha**an
from django.contrib import admin
from testadmin.models import Info
# Register your models here.
@admin.register(Info)
class InfoAdmin(admin.ModelAdmin):
""" 信息 """
list_display = ['format_name', 'age', 'addr', 'create_time', 'update_time']
list_per_page = 5
# 定义处理方法,需要把方法名替换到list_display中对应位置
def format_name(self, obj):
""" 名字脱敏处理 """
return obj.name[0:2] + '***' + obj.name[-1]
# 修改列名显示
format_name.short_description = '名字'
快捷搜索支持
使用 list_filter
快捷搜索字段
from django.contrib import admin
from testadmin.models import Info
# Register your models here.
@admin.register(Info)
class InfoAdmin(admin.ModelAdmin):
""" 信息 """
list_display = ['format_name', 'age', 'addr', 'create_time', 'update_time']
list_per_page = 5
list_filter = ('age',) # 按照分类添加搜索字段
search_fields = ('name',) # 按照模糊搜索添加搜索字段
修改 APP 列名为中文
修改 APP 模块中的 apps.py
from django.apps import AppConfig
class TestadminConfig(AppConfig):
name = 'testadmin'
verbose_name = '管理测试'
修改模型列名为中文
修改 APP 模块中的 models.py
class Info(models.Model):
name = models.CharField(verbose_name="姓名", max_length=128)
class Meta:
verbose_name = '信息管理'
verbose_name_plural = '信息管理'
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于