Django进阶(1): admin后台高级玩法(多图)

Django自带的admin管理后台简直是个bug级的存在, 几行代码就可以撸出一个功能齐全的管理后台来。小编我今天就带你看下Django自带的admin有哪些高级用法值得掌握。本文建议先收藏再阅读。

我们将以博客为例,创建一个名为blog的app, 再创建一个文章(Article)模型,如下所示:

我们先在blog目录下创建admin.py,添加如下代码。这些都是最常见设置,我这里就不详述了。

from django.contrib import admin
from .models import Article
from django.utils.html import format_html


class ArticleAdmin(admin.ModelAdmin):
    # Custom admin list view
    list_display = ('title', 'author', 'status', 'create_date', )
    # list_display_links = ('title', ) # default
    # sortable_by # a sub set of list_display. All fields are sortable by default.


    '''define which fields are editable on list view'''
    list_editable = ('status', )


    '''10 items per page'''
    list_per_page = 5


    '''Max 200 when clicking show all'''
    list_max_show_all = 200 #default


    '''Calling select related objects to reduce SQL queries'''
    list_select_related = ('author', )


    '''Render a search box at top. ^, =, @, None=icontains'''
    search_fields = ['title']


    '''Render date options at top. do not accept tuple'''
    date_hierarchy = 'create_date'


    '''Replacement value for empty field'''
    empty_value_display = 'NA'


    '''filter options'''
    list_filter = ('status', 'author__is_superuser', ) 


admin.site.register(Article, ArticleAdmin)

此时登录django后台访问Article模型你将看到如下基础显示效果。我们将从这里开始展示django自带admin后台更高级的用法。

1. 自定义list_display显示字段

目前文章列表中的文章创建日期是英文字段,不是我们想要的。我们可以自定义一个时间格式(比如以2020-11-09 15:00)展示,并以红色标注。

此时修改我们的admin.py, 在ArticleAdmin类中新增一个custom_date方法,把其加入list_display选项,如下所示:

# Register your models here.
class ArticleAdmin(admin.ModelAdmin):


    # Custom admin list view
    list_display = ('title', 'author', 'status', 'create_date', 'custom_date', )
    '''中间省略'''    
    '''custom field on list view'''
    def custom_date(self, obj):
        return format_html(
            '<span style="color: red;">{}</span>',
            obj.create_date.strftime("%Y-%m-%d %H:%M:%S")
        )


    custom_date.short_description = '定制格式及颜色'

新的展示效果如下所示:

2. 优化ForeignKey或多对多字段的选择<

  • 34
    点赞
  • 200
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值