美文网首页
Django的记录(二)admin

Django的记录(二)admin

作者: IT_小马哥 | 来源:发表于2019-10-19 22:55 被阅读0次

接上一章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'

相关文章

网友评论

      本文标题:Django的记录(二)admin

      本文链接:https://www.haomeiwen.com/subject/oxfomctx.html