1. 程式人生 > >Django模型Model(實驗樓學習筆記)

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

你會看到這樣的輸出:

4-2.3-1

通過執行 makemigrations 命令,Django 會檢測你對模型檔案的修改,並且把修改的部分儲存為一次遷移

讓我們看看遷移命令會執行哪些SQL語句。

$ python3 manage.py sqlmigrate lib 0001

可以看到建立的SQL語句

 

現在執行migrate命令,在資料庫裡建立新定義的模型的資料表:

$ python3 manage.py migrate 

看到如下畫面,則表示成功! 4-2.3-3

(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