Django學習筆記4 建立模型

2021-08-03 16:57:02 字數 2760 閱讀 8207

專案環境搭建好了可以開工了。

django規定,如果要使用模型,必須要建立乙個應用。通過 djaong 編寫的每個應用都是由python包組成的,這些包存放在你的python path 中並且遵循一定的命名規範。 django 提供了個實用工具可以自動生成乙個應用的基本目錄架構,因此你可以專注於編寫**而不是去建立目錄。

專案與應用之間有什麼不同之處?

應用是乙個提供功能的 web 模組– 例如:乙個部落格系統、乙個公共記錄的資料庫者乙個簡單的投票系統。 專案是針對乙個特定的 web **相關的配置和其應用的組合。乙個專案可以包含多個應用。乙個應用可以在多個專案中使用。應用可以存放在 python path 中的任何位置。

admin.py:django自帶了乙個管理後台介面,這個檔案可以註冊model在後台介面中管理

init.py:表明polls也是乙個包

migrations:用來初始化資料庫,在執行python manage.py makemigrations 的時候會自動生成乙個檔案在這裡

init.py:表明migrations也是乙個包

models.py:在這個檔案裡面定義model類

tests.py:寫測試**

views.py:檢視,django對映urls.py裡面的url的時候,在views.py裡面查詢對應的處理方法

poll 有問題和發布日期兩個字段,choice有選項( choice )的文字內容和投票數,每乙個 choice 都與乙個 poll 關聯。

poll表:

欄位名描述

字段型別

id邏輯id

intquestion

問題varchar

pub_date

發布時間

timedate

choise表:

欄位名描述

字段型別

id邏輯id

intchoice_text

選項的文字內容

varchar

votes

選項的投票數

intpoll_id

外來鍵關聯的poll中對應 id

int

這些概念都由簡單的 python 類來表現,每個類對應一張資料庫中的表。編輯 polls/models.py 檔案後如下所示:

from django.db import models

class poll(models.model):

question = models.charfield(max_length=200)

pub_date = models.datetimefield('date published')

class choice(models.model):

poll = models.foreignkey(poll)

choice_text = models.charfield(max_length=200)

votes = models.integerfield(default=0)

每個欄位由乙個 field 的例項來表現 – 比如 charfield 表示字元型別的字段和 datetimefield 表示日期時間型的字段。這會告訴 django 每個欄位都儲存了什麼 型別的資料。 每乙個 field 例項的名字就是欄位的名字(如: question 或者 pub_date ),其格 式屬於親和機器式的。在 python 的**中會使用這個值,而資料庫會將 這個值作為表的列名。可以在初始化 field 例項時使用第乙個位置的可選引數來指定人類可讀的名字。 這在django的內省部分中被使用到了,而且兼作文件的一部分來增強**的可讀 性。若字段未提供該引數,django 將使用符合機器習慣的名字。在本例中,我們 僅定義了乙個符合人類習慣的欄位名 poll.pub_date 。對模型中的其他字段,機 器名稱就已經足夠替代人類名稱了。

一些 field 例項是需要引數的。例如 charfield 需要你指定 ~django.db.models.charfield.max_length 。這不僅適用於資料庫結構,以後 我們還會用於資料驗證中。 乙個 field 例項可以有不同的可選引數; 在本例中,我們將 votes 的 default 的值 設為 0 。

最後,注意我們使用了 foreignkey 定義了乙個關聯。它告訴 django 每一 個 choice 關聯乙個 poll 。 django 支援常見資料庫的所有關聯:多對一( many-to-ones ),多對多( many-to-manys ) 和 一對一 ( one-to-ones )。

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'polls']

同步到資料庫,在專案目錄下執行如下命令

python manage.py makemigrations

python manage.py migrate

或者在eclipse下 右鍵->django->make migrate.再右鍵->django-> migrate

執行成功後會myweb資料庫中會建立幾張表出來其中就有我們剛剛建立的模型對應的表

到此模型建立成功

Django建立模型

在django中寫乙個資料庫驅動的web應用的第一步是定義模型,這是資料庫結構設計和附加的其他元資料。在投票應用中,將建立question 問題 和choice 選項 兩個模型,question模型包括問題描述和發布時間,choice模型包括選項描述和當前得票數。每個選項屬於乙個問題。重寫polls...

Django筆記 day 2 建立模型

建立表單 models 可提供多種字段 定義部落格型別類,繼承model基類 from django.db import models from django.contrib.auth.models import user class blogtype models.model 部落格型別 mode...

django 購物系統 建立模型

1.前置準備 er圖 實體關係模型設計 uml類圖 類的設計 2.category模型 3.product模型 4 django常用字段型別 booleanfield charfield textfield datefield datetimefield decimalfield filefield...