iT邦幫忙

2021 iThome 鐵人賽

DAY 16
6

繼續談談 model

昨天提到 Django 的 model 好處是可以無痛轉移在各個 Python 資料庫裡。那我們今天深入一點先談談 model 內部怎麼運作。

官網傳送門

基礎

  • 每個模型都是 Python 的一個 class
  • 每個 class 都繼承 django.db.models.Model
  • 模型每個 class 的屬性都屬於資料庫的一部分
  • 利用這謝,Django 提供了一個自動生成訪問資料庫的 API

範例取自官網

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

像是這樣一個 model,first_namelast_name 都是 CharField

這一段我們會創建成以下的資料庫表格:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

那我們更進階的討論一下 Model Field

Model Field

Django 提供多種 Model Field,像是上面的 CharField,就像是字串欄位,裡面就規定需要有一個 max_length 的參數。

除了這個還有像是 TextField,就偏向沒有最大長度的 CharField

提供多種 Field,每個也都有規定的必須或是非必要參數,歡迎參考官方文檔

小結

總之,在我的看法,Model 有點像是現在網站上宣告一個 function,然後這個 function 用 Model Field 來宣告型態!
但型態又有很多種,包含剛剛提到的字元或是文字,還有影像(ImageField)、還有網址(URLField)等等非常多的選項。

就是用來建立資料庫,並且在各個資料庫間無痛轉移。
這就是 Django 的好處。


上一篇
【Day 15】淺談 Django model
下一篇
【Day 17】Django model
系列文
陪聊_伃時不候 Line Bot 聊天機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言