接上一章django的基本命令
关于admin的一些设置
- 首先要在app/admin.py注册模型,注册的方式有两种
#第一种注册,注册参数
#先创建一个和你的模型对应的管理类
class NewsAdmin(admin.ModelAdmin):
pass
admin.site.register(BookInfo,NewsAdmin)
#第二中注册方式装饰器
@admin.register(News)
class NewsAdmin(admin.ModelAdmin):
pass
- 注册完了可以添加一些设置,这里我们用注册器
@admin.register(News)
class NewsAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['title','img','time', 'source','priority', 'hidden']
#可编辑字段
list_editable = ['priority', 'hidden']
#每页显示的数量
list_per_page = 30
#可调转设置
list_display_links = ['title','source',"time"]
#设置空值
empty_value_display ='无'
#action按钮的位置
actions_on_top = True
#搜索器支持设置,表示输入一个搜索值就去这四个字段检索
search_fields = ['title', 'time', 'source','content']
#显示内容的排序,前边加-就是倒序
ordering = ('-time',)
#过滤器
list_filter = ['source']
#下面的是进入详情页的设置,这两个只能用一个,不能共存
#显示字段
fields = ['name', 'hidden']
#分组显示
fieldsets = (
('基本', {'fields': ['title', 'img','time','source']}),
('高级', {
'fields': ['content','like', 'comment','url','author','label','hidden','keywords'],
'classes': ('collapse',) # 是否折叠显示
})
)
- 增加admin中的action操作
@admin.register(News)
class NewsAdmin(admin.ModelAdmin):
#增加的action
actions = [del_imgs]
#queryset就是选中的数据,可以进行循环操作
def del_imgs(self, request, queryset):
queryset.update(img=None)
messages.success(request, "删除图片成功")
- 重写右边的过滤器排序规则
@admin.register(News)
class NewsAdmin(admin.ModelAdmin):
#重写右边栏目的时间过滤器,使按照name字段倒序
class VersionFilter(SimpleListFilter):
#这里是排序字段
title = new_fliter('名字')
#这里是需要排序的字段
parameter_name = 'name'
def lookups(self, request, model_admin):
qs = model_admin.get_queryset(request)
#这里是需要排序的字段 #这里是需要排序的字段
return [(i, i) for i in qs.values_list('name', flat=True).distinct().order_by('-name')]
def queryset(self, request, queryset):
if self.value():
#这里是需要排序的字段
return queryset.filter(name__exact=self.value())
#过滤器
list_filter = ['source',VersionFilter]
- 修改admin登录的欢迎语,网页的title等
#在你的app的admin.py文件中增加这三个
admin.site.site_header = '新闻管理系统'
admin.site.site_title = '我的数据新闻数据库' #
admin.site.index_title = '欢迎使用新闻管理系统'
- 修改APP在admin中显示的名字
#首先在你的app的apps.py中,增加verbose_name,这个文件目前应该就一个类:
class TuijianConfig(AppConfig):
name = 'Tuijian'
verbose_name = '这是我APP的名字'
/app
然后再app下的__init__.py中增加
#必须在这里设置,admin的app的名字才会改变
#注意这里Tuijian修改为你自己的app的name
default_app_config = 'Tuijian.apps.TuijianConfig'
网友评论