Django(四):使用Admin站点快速开发

本文详细介绍了Django的Admin工具,包括如何创建管理员账号、注册模型到Admin、自定义管理视图以及实现动作功能。通过`actions`可以定义站点动作,例如批量修改对象状态,提高后台管理效率。此外,还展示了如何定制列表显示、排序、过滤等选项,提供更友好的数据浏览体验。文章结合实例代码,帮助读者深入理解Django Admin的高级用法。
摘要由CSDN通过智能技术生成

本篇文展不造轮子,原因看上篇文展

admin初步了解

Django Admin 管理工具 | 菜鸟教程

admin进阶了解

Django进阶(1): admin后台高级玩法(多图)_大江狗的博客-CSDN博客

这个作者讲的很好,共三篇文章

admin知识点总结

初次使用

创建管理员帐号密码

首先,下面命令创建一个管理员帐号

python manage.py createsuperuser

输入用户名:

Username: admin

输入邮箱地址:

Email address:vip@django.cn

输入密码:

Password: **********
Password (again): *********

注册admin

使用装饰器,可注册多个模型(推荐)

from django.contrib import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass

直接注册

from django.contrib import admin
from myproject.myapp.models import Author

class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author, AuthorAdmin)

功能介绍

站点动作

编写动作函数

首先,我们需要编写一个在管理员触发操作时调用的函数。动作函数只是接受三个参数的常规函数​​:

  • 目前的ModelAdmin编写动作函数
  • 一个HttpRequest代表当前请求,
  • QuerySet包含用户选择的对象集。
def make_published(modeladmin, request, queryset):
    queryset.update(status='p')

为了获得最佳性能,我们使用了查询集的更新方法。其他类型的操作可能需要单独处理每个对象;在这些情况下,我们只需遍历查询集:

for obj in queryset:
    do_something_with(obj)

完整案例

from django.contrib import admin
from myapp.models import Article

def make_published(modeladmin, request, queryset):
    queryset.update(status='p')
make_published.short_description = "Mark selected stories as published"	#动作名称

class ArticleAdmin(admin.ModelAdmin):
    list_display = ['title', 'status']
    ordering = ['title']
    actions = [make_published]

admin.site.register(Article, ArticleAdmin)

动作作为ModelAdmin方法

上面的示例显示了定义为简单函数的操作。这很好,但从代码设计的角度来看并不完美:由于动作与对象紧密耦合,因此将动作与对象本身挂钩是有意义的。

class ArticleAdmin(admin.ModelAdmin):
    ...

    actions = ['make_published']

    def make_published(self, request, queryset):
        queryset.update(status='p')
    make_published.short_description = "Mark selected stories as published"

令上出modeladmin参数改为self即可

常用API


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后台更高级的用法。
(图片出自大江狗文章)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值