目录
- 一、Admin的配置
- 1.激活管理工具
- 2.使用管理工具
- 3.注册超级用户
- 4.修改语言
- 二、管理数据模型
- 1.注册medel类到admin
- 2.自定制类
一、Admin的配置
Admin是Django的一个强大的功能,它能从数据库中读取数据,并呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能,下面这一系列文章就逐步深入介绍如何定制适合自己的admin应用。
1.激活管理工具
通常我们在生成项目时会在 urls.py 中自动设置好,当这一切都配置好后,Django 管理工具就可以运行了。
# urls.py
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
2.使用管理工具
启动开发服务器,然后在浏览器中访问 http://127.0.0.1:8000/admin/,得到如下界面:
3.注册超级用户
你可以通过命令 python manage.py createsuperuser 来创建超级用户,如下所示:
# python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address:
Password:
Password (again):
Superuser created successfully.
邮箱地址可选,可填也可不填
注册完成后,我们便可以登陆强大的管理系统.
4.修改语言
如果你觉得英文界面不好用,可以在setting.py 文件中修改以下选项
LANGUAGE_CODE = 'en-us' #LANGUAGE_CODE = 'zh-hans'
二、管理数据模型
1.注册medel类到admin
注册medel的两种方法:
<1> 使用register的方法
admin.site.register(Book)
<2> 使用register的装饰器
@admin.register(Book)
方法二后面需要加一个自定制类
实现代码:
admin.site.register(models.Book)
admin.site.register(models.Publish)
admin.site.register(models.Author)
当我们点击某个数据进行管理时,还缺乏某些功能需要我们自己自定制,比如搜索,排序等等功能。
2.自定制类
from django.contrib import admin
from app import models
@admin.register(models.Book)
class BookAdmin(admin.ModelAdmin):
list_display = ("id","name", 'price',) #在每一条记录上,指定要显示的字段
list_editable = ("name", "price",) #可直接对字段进行编辑
filter_horizontal = ("author",)
# filter_vertical = ("author",)
# list_per_page = 2 #对记录进行分页,每一页只有XX条信息。
search_fields = ("id", "name", ) #指定搜索的字段,可以选择多个字段
list_filter = ("publish","put_data",) #指定列表过滤器
ordering = ("price",) # 指定排序字段,默认以创建时间排序
admin.site.register(models.Publish)
admin.site.register(models.Author)
常见的自定制方法有这几个,使用后能够是我们的管理界面更加的强大
- list_display: 指定要显示的字段
- search_fields: 指定搜索的字段
- list_filter: 指定列表过滤器
- ordering: 指定排序字段
其实,当我们在添加书籍的时候,没有必要将所有的字段都需要填写,如果有些字段可选填的,那么就可以隐藏起来,我们需要补充时,就可以填写。这就要用到fieldsets,
fieldsets =[
(None, {'fields': ['name']}),
('price information', {'fields': ['price',"publish"], 'classes': ['collapse']}),
('put data',{'fields': ["put_data"], 'classes': ['collapse']} ),
]