今天內容主要為實作模型和使用Django提供的管理網站進行資料操作。
今天將建立兩個資料模型,其中Author和Book為一對多的關係:
開啟應用程式資料夾(../專案資料夾/track/)下的models.py。
新增以下程式 (Book模型):
from uuid import uuid4
from datetime import datetime
class Book(models.Model):
bookid = models.UUIDField(primary_key=True, default=uuid4(), auto_created=True, editable=False)
authorid = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)
title = models.CharField(max_length=20)
oriurl = models.CharField(max_length=100, help_text="Enter URL")
totalsection = models.IntegerField(default=0)
BOOK_STATUS = (
('s', '連載'),
('e', '完結'),
('u', '未知')
)
bookstatus = models.CharField(max_length=1, choices=BOOK_STATUS, default = 'u')
istrack = models.BooleanField(default=False)
updatetime = models.DateTimeField(default=datetime.now(), editable=False)
class Meta:
ordering = ['bookid']
def __str__(self):
return self.title
Field
bookid:書籍id,primary key,使用GUID,在新增資料時由系統自動產生,不可由使用者編輯。
authorid:作者id,為Author模型的foreign key,可允許空值,當該作者id於Author被刪除時會自動改為空值。
title:書名,最大長度為20。
oriurl:小說網址,最大長度為100
totalsection:總章節數,預設為0
bookstatus:連載狀態,使用BOOK_STATUS (Tuple)為選項,預設為「u」(未知)。
istrack:是否列入追蹤
updatetime:資料更新時間,不可由使用者編輯
Meta
def
class Author(models.Model):
authorid = models.UUIDField(primary_key=True, default=uuid4(), auto_created=True, editable=False)
authorname = models.CharField(max_length=30)
class Meta:
ordering = ['authorid']
def __str__(self):
return self.authorname
Field
authorid:作者id,使用GUID,在新增資料時由系統自動產生,不可由使用者編輯。
authorname:作者名稱,最大長度為30。
Meta
def
這個動作,會根據專案的模型,於資料庫中做對應的更新。
python manage.py makemigrate
python manage.py migrate
makemigrate:根據異動的model內容,產生對應的程式於migration資料夾下。
migrate:使用makemigrate產生的程式碼,實際於資料庫做異動。
執行完以上指令後,實際連線到MySQL資料庫中,可以看到新建立了track_book和track_author。
Django內建的管理網站,可以提供基礎的資料管理和權限管理功能,對於一個簡單的系統而言,可以省去另外架設後台網站的人力。
為了能使用管理網站進行資料操作,需要先將模型註冊在管理網站中進行註冊。
開啟應用程式資料夾(../專案資料夾/track/)下的admin.py,加入以下程式:
from .models import Book, Author
admin.site.register(Book)
admin.site.register(Author)
為了能簡化後續測試流程,建立一個superuser帳號以登入管理網站。
python manage.py createsuperuser
進行此階段時須先啟動伺服器。
python manage.py runserver
使用瀏覽器開啟管理網站 (這邊使用的是 http://127.0.0.1:8000/admin ),使用帳號登入後可以看到管理介面,分為權限管理和Track的模型管理兩個區塊。
在模型管理中,提供資料的增刪讀寫功能,而畫面中各欄位的呈現會和model中的屬性設定有關。