admin 后台數據庫管理
django 提供了比較完善的后台管理數據庫的接口,可供開發過程中調用和測試使用
django 會搜集所有已注冊的模型類,為這些模型類提拱數據管理界面,供開發者使用
使用步驟:
1.創建后台管理帳號:$ python3 manage.py createsuperuser
根據提示完成注冊,參考如下:
$ python3 manage.py createsuperuser Username (leave blank to use 'tarena'): tarena # 此處輸入用戶名 Email address: weimz@tedu.cn # 此處輸入郵箱 Password: # 此處輸入密碼(密碼要復雜些,否則會提示密碼太簡單) Password (again): # 再次輸入重復密碼 Superuser created successfully.
2.用注冊的帳號登陸后台管理界面
后台管理的登錄地址:http://127.0.0.1:8000/admin
一、自定義后台管理數據表
若要自己定義的模型類也能在 /admin
后台管理界中顯示和管理,需要將自己的類注冊到后台管理界面
添加自己定義模型類的后台管理數據表的,需要用admin.site.register(自定義模型類)
方法進行注冊
配置步驟如下:
1.在應用app中的admin.py中導入注冊要管理的模型models類
from . import models
2.調用 admin.site.register 方法進行注冊
from django.contrib import admin
admin.site.register(自定義模型類)
如: 在 bookstore/admin.py 添加如下代碼對Book類進行管理
# file: bookstore/admin.py from django.contrib import admin # Register your models here. from . import models ... admin.site.register(models.Book) # 將Book類注冊為可管理頁面
二、修改后台Models的展現形式
在admin后台管理數據庫中對自定義的數據記錄都展示為 XXXX object
類型的記錄,不便於閱讀和判斷
在用戶自定義的模型類中可以重寫 def __str__(self):
方法解決顯示問題
如:在自定義模型類中重寫 str(self) 方法返回顯示文字內容:
class Book(models.Model): ... def __str__(self): return "書名" + self.title
三、模型管理器類
作用:為后台管理界面添加便於操作的新功能。
說明:后台管理器類須繼承自 django.contrib.admin
里的 ModelAdmin
類
模型管理器的使用方法:
1.在 <應用app>/admin.py
里定義模型管理器類
class XXXX_Manager(admin.ModelAdmin): ......
2.注冊管理器與模型類關聯
from django.contrib import admin from . import models admin.site.register(models.YYYY, XXXX_Manager)
# 注冊models.YYYY 模型類與 管理器類 XXXX_Manager 關聯
示例:
# file : bookstore/admin.py from django.contrib import admin from . import models class BookAdmin(admin.ModelAdmin): list_display = ['id', 'title', 'price', 'market_price'] admin.site.register(models.Book, BookAdmin)
進入http://127.0.0.1:8000/admin/bookstore/book/ 查看顯示方式和以前有所不同
模型管理器類ModelAdmin中實現的高級管理功能
- list_display 去控制哪些字段會顯示在Admin 的修改列表頁面中。
- list_display_links 可以控制list_display中的字段是否應該鏈接到對象的“更改”頁面。
- list_filter 設置激活Admin 修改列表頁面右側欄中的過濾器
- search_fields 設置啟用Admin 更改列表頁面上的搜索框。
- list_editable 設置為模型上的字段名稱列表,這將允許在更改列表頁面上進行編輯。
- 其它參見https://docs.djangoproject.com/en/1.11/ref/contrib/admin/
四、數據庫表管理
1.修改模型類字段的顯示名字
- 模型類各字段的第一個參數為 verbose_name,此字段顯示的名字會在后台數據庫管理頁面顯示
- 通過 verbose_name 字段選項,修改顯示名稱
示例如下:
title = models.CharField( max_length = 30, verbose_name='顯示名稱' )
2.通過Meta內嵌類 定義模型類的屬性及展現形式
模型類可以通過定義內部類class Meta 來重新定義當前模型類和數據表的一些屬性信息
用法格式如下:
class Book(models.Model): title = CharField(....) class Meta: 1. db_table = '數據表名' - 該模型所用的數據表的名稱。(設置完成后需要立馬更新同步數據庫) 2. verbose_name = '單數名' - 給模型對象的一個易於理解的名稱(單數),用於顯示在/admin管理界面中 3. verbose_name_plural = '復數名' - 該對象復數形式的名稱(復數),用於顯示在/admin管理界面中
示例:
class Meta: db_table = 'book_table'
# 將原數據表名"bookstore_book" 換為 "book_table",請查看數據表 verbose_name = 'booooook' verbose_name_plural = 'booksssssss'
# 去127.0.0.1:8000/admin下看看哪兒變化了?