Django實戰(2) 建立第乙個模型類

2021-08-26 16:18:56 字數 1649 閱讀 8168

從模型開始開發似乎是個好主意。一方面模型是整個應用的核心,實現了應用的業務資料和對業務資料進行操作的約束,而檢視和模板只是向使用者提供操作和展現這些資料的介面;另一方面模型相對於系統的其他部分更加穩定,將模型先確定下來有助於系統其他部分的實現。ddd(領域驅動設計)更進一步將模型中的核心物件抽取出來作為「領域模型」。

從depot應用來看,產品(product) 應該是模型中的核心物件之一。就讓我們先來實現product模型。

用python**定義資料庫

在《django的第一印象》中介紹過,django的設計是 以python類的形式定義資料模型。之所以沒有採用rails的執行時自動獲取資料庫schema的」魔術方式「,是出於以下的考慮:

1. 效率。執行時掃瞄資料庫可能會帶來效能問題。

2. 明確性。只通過model類就完全知道資料庫中有哪些字段,而不需要再切換到migration或schema檔案中去檢視,更不需要去檢視資料庫結構。

3. 一致性。你看到的只是python**,完全不需要將大腦切換到」資料庫模式「,能極大提高開發效率。

4. 版本控制。rails中的資料庫結構版本儲存在乙個個的migration檔案中,這簡直就是版本管理的」反模式「。django的方式是管理model**檔案的版本。

5. 可擴充套件性。可以定義資料庫中不存在的」字段型別「。比如email,url,等等。

當然,django也提供從現有資料庫表中自動掃瞄生成模型的工具。

so,《agile web development with rails》中的做法是先建立資料庫表:

drop table if exists products; create table products ( id int not null auto_increment, title varchar(100) not null, description text not null, image_url varchar(200) not null, price decimal(10,2) not null, primary key (id) );

然後再生成scaffold(包括model,controller,test,4個views等等)。

而django的做法是,編寫下面的model類:

部署模型

就完成了資料庫的配置。

接下來就可以使用模型了。先驗證一下:

$python manage.py validate

0 errors found

然後可以看一下這個model將會生成什麼樣的資料庫:

begin;

"id" integer not null primary key,

"title" varchar(100) not null,

"description" text not null,

"image_url" varchar(200) not null,

"price" decimal not null);

commit;

最後,將模型匯入資料庫:

$ python manage.py syncdb

creating tables ...

installing custom sql ...

installing indexes ...

no fixtures found.

至此,完成了第乙個模型類的建立。

Django實戰(2) 建立第乙個模型類

從模型開始開發似乎是個好主意。一方面模型是整個應用的核心,實現了應用的業務資料和對業務資料進行操作的約束,而檢視和模板只是向使用者提供操作和展現這些資料的介面 另一方面模型相對於系統的其他部分更加穩定,將模型先確定下來有助於系統其他部分的實現。ddd 領域驅動設計 更進一步將模型中的核心物件抽取出來...

Django實戰(2) 建立第乙個模型類

從模型開始開發似乎是個好主意。一方面模型是整個應用的核心,實現了應用的業務資料和對業務資料進行操作的約束,而檢視和模板只是向使用者提供操作和展現這些資料的介面 另一方面模型相對於系統的其他部分更加穩定,將模型先確定下來有助於系統其他部分的實現。ddd 領域驅動設計 更進一步將模型中的核心物件抽取出來...

建立第乙個Django工程

建立第乙個django工程 django環境算是配置完成了,你可以到命令提示符下建立第乙個django應用,進入某個目錄,執行django admin.py startproject myproject來建立乙個工程 這時在myproject目錄下有乙個資料夾myproject和乙個manage.p...