今天來聊 models.py
昨天介紹了 database
今天講資料表
資料表的規劃,非常的重要
不管是在命名,結構什麼的都要有讓人看得懂
因為如果上線了,有了資料就不好改了
之前提到要做購物車系統,先來個想像
有一些類別,每一個類別中有一些項目
再開一個 app 取名叫 store 吧
我習慣就是把用app把主要功能分開,像 main 適合用來放首頁,共用檔等等
python manage.py startapp store
settings.py
INSTALLED_APPS = [
...
'store'
]
資料表規劃,先做想到的欄位
Category
id, PK
name, Char
Item
id, PK
category, FK(item)
name, Char
price, int
id: 預設會有並且有auto_increase
CharField() 字元格式 一定設定max_length
ForeignKey() 外來鍵 第一個參數是fk 到哪張表, on_delete 選項
IntegerField() 整數
store/models.py
class Category(models.Model):
name = models.CharField(max_length=100)
class Item(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
price = models.IntegerField()
ForeignKey on_delete 參數
https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ForeignKey
可以參考 djagno models.py 其他欄位型態
https://docs.djangoproject.com/en/2.0/ref/models/fields/#field-types
跑 makemigrations 會把剛剛設定models.py 的 資料表 產生一個mapping的檔案
在app_name目錄底下 store/migrations/
python manage.py makemigrations
migrate:會把 makemigrations 產生的檔案建立到資料庫中
python manage.py migrate
就完成了 table 建立
今天就到這裡 聖誕節快樂