django 后台管理 ---- 优化 admin 配置

本贴最后更新于 1381 天前,其中的信息可能已经事过境迁

需要优化的地方

  • 查询速度优化
  • 字段格式化字段优化
  • 快捷搜索支持
  • 实现用户搜索

查询速度的优化

  • 减少每页的数据大小
  • 减少 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	# 新增分页大小

image.png

字段格式化显示

  • 将用户名脱敏处理,例: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 = '名字'

image.png

快捷搜索支持

使用 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',)	# 按照模糊搜索添加搜索字段

image.png

修改 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 = '信息管理'

image.png

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖
  • Django
    47 引用 • 72 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...