Django Admin的简单使用
注册
方式一:
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'pwd',)
admin.site.register(models.UserInfo, UserAdmin) # 第一个参数可以是列表
方式二:
@admin.register(models.UserInfo) # 第一个参数可以是列表
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'pwd',)
list_display
必须是列表或者其他可迭代对象
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
def xxx(self, obj):
return 'xxx'
# 这里的 xxx 必须是字符串
list_display = ['nid','title', 'publish', 'xxx']
list_display_links
通常是列表,定制列可以点击跳转
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
def xxx(self, obj):
return 'xxx'
list_display = ['nid','title', 'publish', 'xxx']
# list_display_links 的值必须在 list_display里面
list_display_links = ['title']
list_filter
通常是列表,定制右侧快速筛选
分页相关
# 分页,每页显示条数
list_per_page = 100
# 分页,显示全部(真实数据<该值时,才会有显示全部)
list_max_show_all = 200
# 分页插件
paginator = Paginator
list_editable
通常是列表,可以编辑的列,不能是多对多的字段
search_fields
通常是列表,模糊搜索的功能
date_hierarchy
字符串字段,对Date和DateTime类型进行搜索
action
通常是列表,定制action中的操作
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
# 定制Action行为具体方法
def func(self, request, queryset):
print(self, request, queryset)
func.short_description = "中文显示自定义Actions"
actions = [func, ]
# Action 选项栏都是在页面上方显示
actions_on_top = True
# Action 选项栏都是在页面下方显示
actions_on_bottom = False
# 是否显示选择个数, True 表示选择的时候 类似 1 of 1 selected
actions_selection_counter = True
定制HTML模板
add_form_template = None
change_form_template = None
change_list_template = None
delete_confirmation_template = None
delete_selected_confirmation_template = None
object_history_template = None
raw_id_fields
通常是列表,详细页面,针对FK和M2M字段变成以Input框形式
fields
详细页面时,显示字段的字段
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
fields = ('user',)
exclude
详细页面时,排除的字段
@admin.register(models.UserInfo)
class UserAdmin(admin.ModelAdmin):
exclude = ('user',)
readonly_fields
详细页面时,只读字段
ordering
通常是列表,数据排序规则
empty_value_display
列数据为空时,显示默认值
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
empty_value_display = "列数据为空时,默认显示"
list_display = ('title', 'publishDate', 'up')
def up(self, obj):
try:
return obj.publish.name
except Exception:
return None
up.empty_value_display = "指定列数据为空时,默认显示"
site_header
admin.site.site_header = 'xxx'