Django模型Model(實驗樓學習筆記)
(1)配置資料庫
Django的專案設定都包含在了mysite/mysite/settings.py
中。
對於資料庫,配置檔案使用了SQLite
作為預設的資料庫檔案。
如果你選擇使用其它資料庫,你需要安裝相應資料庫的繫結,然後改變設定檔案中的DATABASE default
。
使用其他資料庫參考文件:https://docs.djangoproject.com/zh-hans/2.0/ref/settings/#std:setting-DATABASES
配置設定檔案中的TIME_ZONE
為自己所在地的時區,中國地區為Asia/Shanghai
。
TIME_ZONE = 'Asia/Shanghai'
(2)建立模型
模型包含了儲存的資料所必要的欄位和行為。
模型示例如下:
向mysite/lib/models.py
檔案中寫入如下程式碼:
# lib/models.py from django.db import models class Book(models.Model): name = models.CharField(max_length=200) author = models.CharField(max_length=100) pub_house = models.CharField(max_length=200) pub_date = models.DateTimeField('date published')
從程式碼可以看出,模型是django.db.models.Model類的子類。每個模型有一些類變數,它們都表示模型裡的一個數據庫欄位。
每個欄位都是Field類的例項。比如字元欄位是CharField,日期欄位被表示為DateTImeField。這將告訴Django每個欄位要處理的資料型別。
定義某些Field類例項需要引數。如上面的max_length=100
中的max_length
。這個引數的用處不止於用來定義資料結構,也用於驗證資料。
(3)啟用模型
通過前面的程式碼,Django可以:
- 為這個應用建立資料庫schema(生成 CREATE TABLE
- 建立可以與Book物件進行互動的Python資料庫API。
為了實現上述功能,我們首先要將lib應用安裝到我們專案中。
因為LibConfig
類寫在檔案lib/apps.py中,所以它的路徑為lib.apps.LibConfig
在設定檔案中新增路徑:
# mysite/mysite/settings.py
INSTALLED_APPS = [
'lib.apps.LibConfig',
'django.contrib.admin',
...
]
現在你的Django專案會包含lib應用。 執行下面的命令:
$ python3 manage.py makemigrations lib
你會看到這樣的輸出:
通過執行 makemigrations
命令,Django 會檢測你對模型檔案的修改,並且把修改的部分儲存為一次遷移。
讓我們看看遷移命令會執行哪些SQL語句。
$ python3 manage.py sqlmigrate lib 0001
可以看到建立的SQL語句
現在執行migrate命令,在資料庫裡建立新定義的模型的資料表:
$ python3 manage.py migrate
看到如下畫面,則表示成功!
(4)使用各種API:
$ python3 manage.py shell
使用這個命令而不是簡單的使用 "Python" 是因為 manage.py 會設定 DJANGO_SETTINGS_MODULE
環境變數,這個變數會讓 Django 根據 mysite/settings.py
檔案來設定 Python 包的匯入路徑。
>>>from lib.models import Book
>>>Book.objects.all() #獲取Book所有物件
<QuerySet []>
>>>from django.utils import timezone
>>>b = Book(name='Business', author='Tom', pub_house='First Press', pub_date=timezone.now()) #建立
>>>b.save() #儲存
>>>b.id
1
>>>b.name
'Business'
>>>b.pub_date
datetime.datetime(2018, 7, 4, 2, 29, 7, 578323, tzinfo=<UTC>)
本節實驗程式碼的下載連結:
$ wget http://labfile.oss.aliyuncs.com/courses/1127/4.zip