創建超級用戶
django 提供了比較完善的後臺管理數據庫的接口,可供開發過程中調用和測試使用
django 會蒐集所有已註冊的模型類,爲這些模型類提拱數據管理界面,供開發者使用
- 使用步驟:
創建後臺管理帳號:
$ python3 manage.py createsuperuser
用註冊的帳號登陸後臺管理界面$ python3 manage.py createsuperuser Username (leave blank to use 'teenjeen'): teenjeen # 此處輸入用戶名 Email address: [email protected] # 此處輸入郵箱 Password: # 此處輸入密碼(密碼要複雜些,否則會提示密碼太簡單) Password (again): # 再次輸入重複密碼 Superuser created successfully.
後臺管理的登錄地址:http://127.0.0.1:8000/admin
管理自定義數據表
若要自己定義的模型類也能在 /admin
後臺管理界中顯示和管理,需要將自己的類註冊到後臺管理界面
添加自己定義模型類的後臺管理數據表的,需要用admin.site.register(自定義模型類)
方法進行註冊
- 配置步驟如下:
在應用app
中的admin.py
中導入註冊要管理的自定義模型類, 如:from . import models
調用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
類 -
模型管理器的使用方法:
在<應用app>/admin.py
裏定義模型管理器類class XXXX_Manager(admin.ModelAdmin): ......
註冊管理器與模型類關聯
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/
數據庫表管理
-
修改模型類字段的顯示名字
模型類各字段的第一個參數爲verbose_name
,此字段顯示的名字會在後臺數據庫管理頁面顯示
通過verbose_name
字段選項,修改顯示名稱示例如下:title = models.CharField( max_length = 30, verbose_name='顯示名稱' )
-
通過
Meta
內嵌類 定義模型類的屬性及展現形式
模型類可以通過定義內部類class Meta
來重新定義當前模型類和數據表的一些屬性信息
用法格式如下:class Book(models.Model): title = CharField(....) class Meta: 1. db_table = '數據表名' - 該模型所用的數據表的名稱。(設置完成後需要立馬更新同步數據庫) 2. verbose_name = '單數名' - 給模型對象的一個易於理解的名稱(單數),用於顯示在/admin管理界面中 3. verbose_name_plural = '複數名' - 該對象複數形式的名稱(複數),用於顯示在/admin管理界面中