Django Admin后台定制指南
在Django项目中,通过admin.py文件注册模型类可快速启用后台管理功能:
admin.site.register(models.Employee)
高级配置方法
如需深度定制,需继承ModelAdmin类:
# 方式一:显式注册
class StaffAdmin(admin.ModelAdmin):
display_fields = ('name', 'department')
admin.site.register(models.Employee, StaffAdmin)
# 方式二:装饰器注册
@admin.register(models.Employee)
class StaffAdmin(admin.ModelAdmin):
display_fields = ('name', 'department')
常用定制功能
- 列表显示配置
from django.utils.html import format_html class StaffAdmin(admin.ModelAdmin): def action_links(self, obj): return format_html('<a href="#">操作</a>') display_fields = ['avatar', 'id', action_links]
- 列表可编辑字段
editable_fields = ['status', 'priority'] - 快速筛选器
filter_options = ['department', 'join_date'] - 日期层级导航

- 详情页字段控制
# 显示指定字段 detail_fields = ['name', 'email'] # 排除指定字段 excluded_fields = ['salary'] # 只读字段 readonly_fields = ['employee_id']
- 关联模型内联
# models.py class Website(models.Model): title = models.CharField(max_length=64) domain = models.CharField(max_length=64) class Section(models.Model): title = models.CharField(max_length=64) website = models.ForeignKey(Website, on_delete=models.CASCADE) # admin.py class SectionInline(admin.TabularInline): model = models.Section class WebsiteAdmin(admin.ModelAdmin): inlines = [SectionInline]
- 批量操作
class StaffAdmin(admin.ModelAdmin): actions = ['update_status'] def update_status(self, request, queryset): queryset.filter(department=None).update(status='pending') update_status.short_description = "设置未分配部门的状态"
- 自定义模板
custom_list_template = 'admin/custom_list.html' custom_form_template = 'admin/custom_form.html' - 字段显示优化
# 原始ID显示 raw_id_fields = ('department', 'projects') # 单选按钮替代下拉框 radio_fields = {"level": admin.HORIZONTAL} # 空值显示 empty_value_display = "-空白-"