修改管理员页面标题

admin.site.site_header = '修改后'
admin.site.site_title = '哈哈'

在管理界面开启model

from django.contrib import admin
from myapp.models import Author

#等价写法一
class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author, AuthorAdmin)

#等价写法二
@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass
    
#等价写法三
admin.site.register(Author, AuthorAdmin)

定制列表显示页面

  1. list_display,定制哪些列在列表状态显示
@admin.register(models.UserInfo)  
class UserAdmin(admin.ModelAdmin):
	list_display = ('user', 'pwd', 'name')
    def name(self, obj):
    	return self.firstname+self.lastname
  1. list_display_links,定义点击哪些列可以点击跳转至该对象的详情编辑页
@admin.register(models.UserInfo)  
class UserAdmin(admin.ModelAdmin):
    list_display = ('user', 'pwd', 'name')
    list_display_links = ('name',)
  1. list_filter,定制右侧快速筛选
  2. list_select_related,连表查询是否自动select_related
  3. list_editable,列表时可以直接编辑的属性
@admin.register(models.UserInfo)   
class UserAdmin(admin.ModelAdmin): 
    list_display = ('user', 'pwd','ug')
    list_editable = ('ug',)
  1. search_fields,支持模糊搜索的属性
@admin.register(models.UserInfo)   
class UserAdmin(admin.ModelAdmin): 
    search_fields = ('user', 'pwd')
  1. date_hierarchy,列表时,对Date和DateTime类型进行搜索
  2. action,列表时,定制action中的操作
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
    # 定制Action行为具体方法
    def get_datas(self, request, queryset):
        temp = []
        for d in queryset:
            t = [d.job, d.title, str(d.payment), d.person.name]
            temp.append(t)
        f = open('D:\\DjangoProjects\\MyDjango\\data.txt', 'a')
        for t in temp:
            f.write(','.join(t)+'\r\n')
        f.close()
        self.message_user(request, '数据导出成功')

    get_datas.short_description = '导出所选数据'
    actions = ['get_datas']
    
    #其他设置
    actions_on_top = True		#Action按钮在在页面上方显示
    actions_on_bottom = False	#Action按钮在在页面下方显示
    actions_selection_counter = True #是否显示已选择的个数

    

示例图 f5d5414681834b05a8084bdd64b25cb8.png a7461adde9e7425b92d8277f7a7e0596.png

  1. ordering,列表时,数据排序规则
@admin.register(models.UserInfo)  
class UserAdmin(admin.ModelAdmin):
    ordering = ('-id',)
  1. empty_value_display = "列数据为空时,显示默认值"
@admin.register(models.UserInfo)  
class UserAdmin(admin.ModelAdmin):
    empty_value_display = "列数据为空时,默认显示"
    list_display = ('user','pwd','up')
    def up(self,obj):
        return obj.user
    up.empty_value_display = "指定列数据为空时,默认显示"

定制详情页面

常见需求

@admin.register(models.UserInfo)  
class UserAdmin(admin.ModelAdmin):
    fields = ('filed1',)	#包含的字段
    exclude = ('field2',)	#排除的字段
    readonly_fields = ('field3',)
    raw_id_fields = ('FK字段', 'M2M字段',)	#FK和M2M字段变成Input框形式输出
    
	filter_vertical = ("m2m字段",)	#m2m字段连接
	filter_horizontal = ("m2m字段",)	#m2m字段连接,跟上面功能一样但是样式不同

	radio_fields = {"ug": admin.VERTICAL} 	#使用radio控件代替select控件
	radio_fields = {"ug": admin.HORIZONTAL} #使用radio控件代替select控件,跟上面功能一样但是样式不同

fieldsets,对数据进行分类显示

@admin.register(models.UserInfo)  
class UserAdmin(admin.ModelAdmin):
    fieldsets = (
        ('基本数据', {
            'fields': ('user', 'pwd', 'ctime',)
        }),
        ('其他', {
            'classes': ('collapse', 'wide', 'extrapretty'),  # 'collapse','wide', 'extrapretty'
            'fields': ('user', 'pwd'),
        }),
        )