修改管理员页面标题
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)
定制列表显示页面
- list_display,定制哪些列在列表状态显示
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'pwd', 'name')
def name(self, obj):
return self.firstname+self.lastname
- list_display_links,定义点击哪些列可以点击跳转至该对象的详情编辑页
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'pwd', 'name')
list_display_links = ('name',)
- list_filter,定制右侧快速筛选
- list_select_related,连表查询是否自动select_related
- list_editable,列表时可以直接编辑的属性
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'pwd','ug')
list_editable = ('ug',)
- search_fields,支持模糊搜索的属性
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
search_fields = ('user', 'pwd')
- date_hierarchy,列表时,对Date和DateTime类型进行搜索
- 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 #是否显示已选择的个数
示例图
- ordering,列表时,数据排序规则
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
ordering = ('-id',)
- 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'),
}),
)