天天看點

走進 model [三]

本篇将介紹Django如何建立資料庫,如何創造你的第一個模型,還會接觸到Django自帶的背景管理系統,

打開 demo_proj/settings.py,Django 項目的配置都在此。

Python 内置了 SQLite,你無需安裝就可以使用它,但當你開始一個真正的項目時,你可能更傾向使用一個更具擴充性的資料庫,例如 MySQL, 在配置檔案中使用 SQLite 作為預設資料庫,我們的示範也用SQLite。以下就是資料庫的配置項:

走進 model [三]

<code>ENGINE</code>

資料庫引擎,看你是選擇哪種資料庫,是SQLite,或者 是MySQL,還是其他,可選值有

走進 model [三]

<code>name</code>

資料庫名稱,如果是 SQLite,資料庫将是你電腦上的一個檔案,那麼, NAME 應該是此檔案的絕對路徑,包括檔案名。預設值 os.path.join(BASE_DIR, 'db.sqlite3') 将會把資料庫檔案儲存在項目的根目錄。

Django是通過 <code>migrate</code>指令來檢查 settings.py 檔案中的 INSTALLED_APP 配置項,為其中的每個應用建立資料表的。

先來關注下 <code>INSTALLED_APP</code>配置項,我們在Django項目中所有的應用對會包括在此(上篇文章建立的 <code>demo_app</code>也要手動加到這配置項裡)。通常 <code>INSTALLED_APP</code>會預設包括以下自帶的應用

走進 model [三]

這些應用被預設啟用是為了給項目提供友善,比如 <code>django.contrib.admin</code>會幫你建立個管理背景, <code>django.contrib.auth</code>會極大友善登入驗證,等等,後續我們會陸續介紹到。這些應用都需要資料表,比如 <code>django.contrib.admin</code>是背景管理,那麼就必須要有背景管理者。那麼就要求資料庫中必須有類似user表的來維護管理者資料。

Django 通過 <code>migrate</code>指令 根據 不同的app 來建立不同的表,執行指令

走進 model [三]

當看到 如下回報就表示執行成功:

走進 model [三]

我們可以檢視資料庫,會發現多了許多的表,如圖所示:

走進 model [三]

模型是真實資料的簡單明确的描述,它包含了存儲的資料所必要的字段和行為。每一個模型映射一個資料庫表,一般都寫在 <code>models.py</code>中。

打開 <code>demo_app</code>中的models.py 檔案,修改代碼如下:

走進 model [三]

在Cat 類 我們定義了 <code>__str__()</code>方法,這個方法用來有什麼作用,大家可以自己找找答案。

那我們如何把我們剛建的Cat類映射到資料表中呢?執行如下指令即可:

走進 model [三]

我們檢視資料庫,會發現了多了Cat這個表

走進 model [三]

這樣,我們建立的模型就和資料庫中的表建立起了映射關系了。那我們如何操作模型呢,也就是我們如何實作對資料庫進行增删改查操作呢?Django 為我們提供了各種API,我們進入互動式Python指令行來體驗下:

走進 model [三]

至此,Django如何配置資料庫,如何建立model,如何把model映射到資料庫中以及對model的操作我們都以熟悉了下,我們将在後面的課程中的更加深入的介紹model的一些用法。

Django 為我們提供了功能強大的背景。在背景中,我們可以利用Django自帶的功能對定義的對象進行添加,修改,和删除。

要登入到背景,首先必須有管理者賬戶,運作如下指令:

走進 model [三]

啟動我們的工程,在浏覽器中輸入 <code>http://127.0.0.1:8000/admin/</code>,系統會跳轉到背景系統的登入頁面:

走進 model [三]

輸入我們剛才建立的管理者賬号和密碼,我們會進入到背景管理系統的索引頁

走進 model [三]

我們剛才建立的Cat類在哪裡呢?别急,要想在背景看到這個類還得告訴背景系統,Cat類需要被管理,打開 <code>demo_app</code>/admin.py 檔案:

走進 model [三]

重新整理頁面,就可以看到我們定義的Cat類了:

走進 model [三]

點選Cat,系統就會跳轉的Cat 對象的清單頁面,我們剛才示範的操作API 建立的 Cat 對象也在此

走進 model [三]

點選 miaomiao 就進入到編輯頁面

走進 model [三]

編輯和删除功能都能實作。

在介紹了上面的内容之後,我再來補充介紹下常用的Djano字段類型。

走進 model [三]

models.AutoField :預設會生成一個名稱為 id 的列,如果要顯示的自定義一個自增列,必須将給列設定為主鍵 primary_key=True。

models.NullBooleanField :允許 NULL 作為其中一個選項。推薦使用這個字段而不要用 BooleanField 加 null=True 選項。admin 用一個選擇框, &lt;select&gt; (三個可選擇的值:“Unknown”, “Yes” 和 “No” ) 來表示這種字段資料。

models.Decimal:必須指定整數位<code>max_digits</code>和小數位<code>decimal_places</code>

models.DateField:對于參數,<code>auto_now = True</code> 則每次更新都會更新這個時間;<code>auto_now_add</code> 則隻是第一次建立添加,之後的更新不再改變。同(models.DateTimeField)

繼續閱讀