數據庫設計是整個設計最基礎的部分
1、django app的設計:根據系統的需求分析來設計django的app,django的開發是基於app來開發的,所以第一步就是設計app。
2、各app model 的設計:也就是設計對應的數據表
3、數據表的生成以及修改
使用在線教育系統作為實例:
userprofile的設計:在任何一個系統中,user表都是第一個被設計的,django會產生幾個默認用戶數據表
在設計我們自己的user表的時候,我們希望能生成自己的表又希望能夠繼承django的默認表,此時,我們可以繼承AbstractUser(
from django.contrib.auth.models import AbstractUser
)
class UserProfile(AbstractUser):
pass
定義完UserProfile表之后,我們需要在setting.py文件中注冊users app,
INSTALLED_APPS = [
'users',
]
並且定義一個方法AUTH_USER_MODEL = "users.UserProfile",注意這里是使用users.UserProfile而不是users.model.UserProfile
(1)user model的設計:
我們在設計django app的時候,每個app中都有model,model文件中很有可能用到其他app文件當中的model,這就會很容易引入循環引用的問題,為了解決這個問題,很常用的一種方法就是使用分層model的方法,也就是上一層可以引用下一層
的model,如下:
注:PEP8的在引入的規范是第一個區域是導入Python自帶的包,然后隔一行的第二個區域是第三方的包,如django,然后隔一行的第三個區域是我們自己定義的一些model
(2)course model 的編寫:一個數據可能和另一個數據是一對多的關系,但是一張表存儲不了這種關系,所以就需要把這兩個數據分別存儲在不同的數據表當中,這樣就會引入外鍵的關系。
model的FileFIield,定義了這個字段就可以在后台系統中生成上傳文件的按鈕
(3)oganization model的編寫:
(4)operation的model編寫:
所有的APP編寫完成之后,我們可以建立Python的apps包,把所有的app都放到這個apps中,把所有的APP放到apps之后,會發現各個app的model的引用可能會出現紅線,說明我們找不到這些引用的包,所以需要我們在setting.py文件當中
把apps加入Python的搜索目錄之下,
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))