Django(part31)--admin后台数据库管理
學(xué)習(xí)筆記,僅供參考
文章目錄
- admin后臺(tái)數(shù)據(jù)庫(kù)管理
- 使用步驟
- 自定義后臺(tái)管理數(shù)據(jù)表
- 配置步驟
- 模型管理器類
- 模型管理器的使用方法
- ModelAdmin模型管理器類中的高級(jí)管理功能
- 數(shù)據(jù)庫(kù)表管理
- 修改模型類字段的顯示名字
- 通過(guò)Meta內(nèi)嵌類定義模型類的屬性及展現(xiàn)形式
admin后臺(tái)數(shù)據(jù)庫(kù)管理
django 提供了后臺(tái)管理數(shù)據(jù)庫(kù)的接口admin,我們可以在開(kāi)發(fā)的測(cè)試階段使用。django 會(huì)搜集所有已注冊(cè)的模型類,為這些模型類提拱數(shù)據(jù)管理界面,供開(kāi)發(fā)者使用。
在開(kāi)發(fā)階段,我們使用admin后臺(tái)數(shù)據(jù)庫(kù)管理界面進(jìn)行調(diào)試將非常的方便。
使用步驟
- 第一步:創(chuàng)建后臺(tái)管理賬號(hào)
創(chuàng)建管理員帳號(hào),并根據(jù)提示完成注冊(cè):
F:\MyStudio\PythonStudio\goatbishop.project01\Django\mywebsite_db>python manage.py createsuperuser Username (leave blank to use 'goatbishop'): darkgoat Email address: goatbishop@gmail.com Password: Password (again): Superuser created successfully.我們需要在Username處輸入用戶名,在Email address處輸入郵箱,在Password處輸入密碼(密碼要復(fù)雜些,否則會(huì)提示密碼太簡(jiǎn)單),在**Password (again)**處再次輸入相同的密碼(Django為了防止我們第一遍時(shí)輸入錯(cuò)誤)
- 第二步:開(kāi)啟服務(wù)器
- 用注冊(cè)的帳號(hào)登陸后臺(tái)管理界面
后臺(tái)管理的登錄地址:http://127.0.0.1:8000/admin
我們向http://127.0.0.1:8000/admin發(fā)起請(qǐng)求:
輸入用戶名和密碼,點(diǎn)擊Log in,得到如下頁(yè)面:
我們點(diǎn)開(kāi)Users:
我們看到,這里有一張表,表里有一條記錄,這張表對(duì)應(yīng)著我們mywebdb數(shù)據(jù)庫(kù)中的auth_user數(shù)據(jù)表:
mysql> select id,username,email from auth_user; +----+----------+----------------------+ | id | username | email | +----+----------+----------------------+ | 1 | darkgoat | goatbishop@gmail.com | +----+----------+----------------------+ 1 row in set (0.00 sec)我們點(diǎn)開(kāi)darkgoat,填入姓和名:
點(diǎn)擊保存,并查看auth_user數(shù)據(jù)表:
mysql> select username, first_name, last_name from auth_user; +----------+------------+-----------+ | username | first_name | last_name | +----------+------------+-----------+ | darkgoat | 揚(yáng) | 桂 | +----------+------------+-----------+ 1 row in set (0.00 sec)更改成功!
自定義后臺(tái)管理數(shù)據(jù)表
若想要自己定義的模型類也能在 /admin 后臺(tái)管理界中顯示和管理,需要將自己的類注冊(cè)到后臺(tái)管理界面,添加自己定義模型類的后臺(tái)管理數(shù)據(jù)表的,需要用admin.site.register(自定義模型類) 方法進(jìn)行注冊(cè)
配置步驟
- 在應(yīng)用app中的admin.py中導(dǎo)入注冊(cè)要管理的模型models類
我們打開(kāi)bookstore應(yīng)用的admin.py,導(dǎo)入模型類:
from . import models- 調(diào)用 admin.site.register 方法進(jìn)行注冊(cè)
現(xiàn)在,我們回到http://127.0.0.1:8000/admin/后臺(tái)管理界面:
界面中多了一個(gè)Books,我們點(diǎn)進(jìn)去看看:
我們看到5本書(shū),這些記錄都是我們之前手動(dòng)添加到數(shù)據(jù)庫(kù)的。
現(xiàn)在,我們點(diǎn)進(jìn)去第一個(gè)記錄:
這個(gè)界面是Django通過(guò)我們的模型類,自動(dòng)幫我們生成的。在這個(gè)界面中,我們可以對(duì)記錄進(jìn)行修改或刪除。
現(xiàn)在,我們對(duì)這條記錄做出如下修改,并點(diǎn)擊保存:
回到http://127.0.0.1:8000/admin/bookstore/book/:
我們?cè)賹?duì)Author進(jìn)行注冊(cè),并刷新admin數(shù)據(jù)庫(kù)管理界面:
再點(diǎn)擊Authors:
我們發(fā)現(xiàn),這里是一堆Author object(#),而不像Books界面中顯示的那么直觀,利于我們進(jìn)行后續(xù)的判斷,這是因?yàn)槲覀冊(cè)贐ook模型類中對(duì)__str__方法進(jìn)行了重寫(xiě),現(xiàn)在,我們也對(duì)Author模型類的__str__方法進(jìn)行重寫(xiě)。
models.py
class Author(models.Model):name = models.CharField("姓名", max_length = 30, null = False, unique = True, db_index = True)age = models.IntegerField("年齡, ", null = False,default = 1)email = models.EmailField("郵箱", null = True)def __str__(self):string = "姓名:{}, 年齡:{}".format(self.name, self.age) return string記得更改過(guò)models.py文件后要進(jìn)行遷移操作。
我們?cè)偎⑿乱幌陆缑?#xff1a;
very well
模型管理器類
模型管理器類可以用后臺(tái)管理界面添加新功能。后臺(tái)管理器類須繼承自 django.contrib.admin 里的 ModelAdmin 類
模型管理器的使用方法
- 在 <應(yīng)用app>/admin.py 里定義模型管理器類
- 在<應(yīng)用app>/admin.py 里注冊(cè)管理器類與模型類關(guān)聯(lián)
ModelAdmin模型管理器類中的高級(jí)管理功能
| list_display | 控制哪些字段會(huì)顯示在Admin的修改列表頁(yè)面中 |
| list_display_links | 控制list_display中的字段是否應(yīng)該鏈接到對(duì)象的“更改”頁(yè)面 |
| list_filter | 設(shè)置激活A(yù)dmin修改列表頁(yè)面右側(cè)欄中的過(guò)濾器 |
| search_fields | 設(shè)置啟用Admin更改列表頁(yè)面上的搜索框 |
| list_editable | 設(shè)置在更改列表頁(yè)面上對(duì)某字段直接進(jìn)行編輯修改 |
其它參見(jiàn)https://docs.djangoproject.com/en/1.11/ref/contrib/admin/
- 舉個(gè)例子
我們將Book管理器類與Book模型類關(guān)聯(lián)起來(lái),并在更改列表頁(yè)面中添加一些高級(jí)功能。
bookstore應(yīng)用下的admin.py文件:
from django.contrib import admin from . import models # Register your models here.class Book_Manager(admin.ModelAdmin):list_display = ['title', 'pub','exfacPrice', 'price']list_filter = ['pub']admin.site.register(models.Author) admin.site.register(models.Book, Book_Manager)向Book更改列表頁(yè)面http://127.0.0.1:8000/admin/bookstore/book/發(fā)起請(qǐng)求:
數(shù)據(jù)庫(kù)表管理
修改模型類字段的顯示名字
在模型類中,各字段的第一個(gè)參數(shù)為verbose_name,此字段的值會(huì)在后臺(tái)數(shù)據(jù)庫(kù)管理頁(yè)面顯示,比如我們的Book模型類是這樣定義的:
class Book(models.Model):title = models.CharField("書(shū)名", max_length = 30)pub = models.CharField("出版社名", max_length = 50,null = True)exfacPrice = models.DecimalField("出廠價(jià)", max_digits = 6, decimal_places = 2,default = 0)price = models.DecimalField("售價(jià)", max_digits = 6, decimal_places = 2,default = 0)def __str__(self):string = "書(shū)名:%s, 出版社:%s" % (self.title, self.pub) return string我們查看一下后臺(tái)數(shù)據(jù)庫(kù)管理頁(yè)面:
通過(guò)Meta內(nèi)嵌類定義模型類的屬性及展現(xiàn)形式
在模型類中,可以通過(guò)定義內(nèi)部類class Meta的方式,來(lái)重新定義當(dāng)前模型類和數(shù)據(jù)表的一些屬性信息。
- 用法
- 舉個(gè)例子
我們?cè)趍odels.py中新增一個(gè)Publisher模型類,并定義Meta內(nèi)部類:
class Publisher(models.Model):pub = models.CharField("出版社名", max_length = 50,null = True)booknumber = models.PositiveIntegerField("初版書(shū)籍總量", default = 0)tele = models.CharField("聯(lián)系電話", max_length = 11, null = False)class Meta:db_table = "china_publisher"verbose_name = "ChinaPublisher"verbose_name_plural = "ChinaPublishers"在Django shell中給china_publisher數(shù)據(jù)表添加一些數(shù)據(jù):
In [2]: from bookstore import modelsIn [3]: models.Publisher.objects.create(pub="人民郵電出版社", tele="81055364") Out[3]: <Publisher: Publisher object (1)>In [4]: models.Publisher.objects.create(pub="清華大學(xué)出版社", tele="62783933") Out[4]: <Publisher: Publisher object (2)>In [5]: models.Publisher.objects.create(pub="機(jī)械工業(yè)出版社", tele="88379833") Out[5]: <Publisher: Publisher object (3)>In [6]: models.Publisher.objects.create(pub="電子工業(yè)出版社", tele="88258888") Out[6]: <Publisher: Publisher object (4)>打開(kāi)admin數(shù)據(jù)庫(kù)管理界面:
點(diǎn)開(kāi)ChinaPublishers:
查看mywebdb數(shù)據(jù)庫(kù)中的數(shù)據(jù)表們:
mysql> show tables; +----------------------------+ | Tables_in_mywebdb | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | bookstore_author | | bookstore_book | | china_publisher | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 13 rows in set (0.00 sec)可以看到,Publisher模型類創(chuàng)建的數(shù)據(jù)表名字為china_publisher。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Django(part31)--admin后台数据库管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spi总线协议及spi时序图详解_奔创s
- 下一篇: linux cmake编译源码,linu