【Django】 Admin 管理工具

Admin -Django数据库可视化管理工具

参考:http://www.runoob.com/django/django-admin-manage-tool.html

概念:Django Admin 可以对Django后端数据库进行可视化管理。

Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
]

一、激活管理工具

通常我们在生成项目时会在 urls.py 中自动设置好, url('admin/', admin.site.urls),

配置项如下所示:

from django.contrib import admin
from django.conf.urls import url
from app01 import views

urlpatterns = [
    url('admin/', admin.site.urls),
    url('index/', views.index),
    url('addBook/', views.addBook),
    url('delBook/', views.delBook),
    url('modifyBook/', views.modifyBook),
    url('queryBook/', views.queryBook),
]

二、使用管理工具

通过cmd命令 python manage.py createsuperuser 来创建超级用户,如下所示:

启动开发服务器,然后在浏览器中访问 http://127.0.0.1:8000/admin/,得到如下界面:

之后输入用户名密码登录,界面如下:

为了让 admin 界面管理某个数据模型,我们需要先注册该数据模型到 admin

from django.contrib import admin
from app01.models import Book,Publish,Author

# admin.site.register(Book)
# admin.site.register(Publish)
# admin.site.register(Author)

admin.site.register([Book,Publish,Author])  #可以写成一行

刷新后即可看到 Book Publish Author数据表:

注意:如果你觉得英文界面不好用,可以在setting.py 文件中修改以下选项

LANGUAGE_CODE = 'en-us'      #默认英文
#LANGUAGE_CODE = 'zh-hans'    #修改为中文

 

三、自定义表单

我们可以自定义管理页面,来取代默认的页面。比如Books页面内书籍页面内。我们想只显示 name 和 price 部分:

from django.contrib import admin
from app01.models import Book,Publish,Author

class BookAdmin(admin.ModelAdmin):
    fields = ("name","price")

admin.site.register(Book,BookAdmin)  #用BookAdmin 替换掉Book 原来的样式
admin.site.register([Publish,Author])  #可以写成一行

 

我们还可以将输入栏分块,每个栏也可以定义自己的格式:

from django.contrib import admin
from app01.models import Book,Publish,Author

class BookAdmin(admin.ModelAdmin):
    fieldsets = (
        ["Main",{
            'fields' : ("name", "price"),
        }],
        ['Advance',{
            'classes':('collapse',),
            'fields': ('pub_date',),
        }]
    )

admin.site.register(Book,BookAdmin)     #用BookAdmin 替换掉Book 原来的样式
admin.site.register([Publish,Author])   #可以写成一行

Advance 部分旁边有一个 Show 按钮,用于展开,展开后可点击 Hide 将其隐藏,如下图所示:

四、内联(Inline)显示

上面的 Contact 是 Tag 的外部键,所以有外部参考的关系。

而在默认的页面显示中,将两者分离开来,无法体现出两者的从属关系。我们可以使用内联显示,让 Tag 附加在 Contact 的编辑页面上显示。

五、常用功能总结:

0、指定要显示的字段: list_display

1、分页功能:list_per_page = 5

2、可编辑功能:list_editable = ('name','price') #name price 可直接编辑

3、搜索功能:search_fields

4、列表过滤器功能:list_filter

5、排序:ordering

6、水平栏 搜索/选择:filter_horizontal = ('author',)

注意:list_display 不能加多对多

from django.contrib import admin
from app01.models import Book,Publish,Author

class BookAdmin(admin.ModelAdmin):
    # 展示的列
    list_display = ['id','name','price','pub_date']
    # 可编辑
    list_editable = ('name','price')    #name price 可直接编辑
    # 水平过滤
    filter_horizontal = ('author',)
    #添加分页
    list_per_page = 5
    # 添加搜索
    search_fields = ("id","name","price","publish__name")   #按照 id name price publish__name 依次搜索
    #右侧列表过滤
    list_filter = ("pub_date","publish")
    #排序
    ordering =  ("price","pub_date","id")    #按照price 升序排列,price 相同再比较pub_date
    # ordering = ("-price", "id")  # 按照price 降序排列,price相同再按照id排序
    #表字段显示也隐藏
    fieldsets = [
        (None, {'fields': ['name']}),
        ('more', {'fields': ['price', "publish"], 'classes': ['collapse']}),
    ]
admin.site.register(Book,BookAdmin)     #用BookAdmin 替换掉Book 原来的样式
admin.site.register(Publish)
admin.site.register(Author)

 

 


 

 


 

 

搜索效果:


 

 

Django模型类Meta元数据详解(class Meta: )

https://blog.csdn.net/Moniicoo/article/details/81781572

posted @ 2019-08-07 20:29  XJT2019  阅读(206)  评论(0编辑  收藏  举报