Django之物件導向ORM

2021-09-29 08:58:08 字數 787 閱讀 7586

django模型層orm的乙個強大之處是對於模型的支援,該技術將python物件導向的程式設計方法與資料庫面向關係表的資料結構有機地結合。django支援三種風格的模型繼承。

抽象類繼承:父類繼承自model.model,但不會在底層資料庫生成相應的資料表。父類屬性列儲存在其子類的資料表中。

抽象類繼承的作用是在多個表有若干相同的字段時,可以使開發者將這些字段統一定義在抽象基類中,免於重複定義這些字段。抽象基類的定義通過在模型的meta中定義屬性abstract=true來實現。

多表繼承:多表繼承的每個模型型別都在底層資料庫生成相應的資料表管理資料。

多表繼承技術中,無論是父表還是子表都會用資料庫中相對應的資料表維護模型資料,父類中的字段不會重複地在多個子類的相關資料表中進行定義。從某種意義上講,多表繼承才是真正物件導向的orm技術。多表繼承不需要多餘的關鍵字。在django內部通過在父模型和子模型之間建立一對一關係來實現多表繼承技術。

注:在多表繼承時,崽子類例項中通過小寫的父類名字可以引用父類的例項。

**模型繼承:父類用於在底層資料庫中管理資料表;而子類不定義資料列,只定義查詢資料集的排序方式等元資料。

在前兩種繼承模型中子類模型都有實際儲存資料的作用;而**模型繼承中子類之用於管理父類的資料,而不實際儲存資料。**模型繼承通過在子類的meta中定義proxy=true屬性來實現。例如在子類模型中ordering = ["-父類模型欄位名"]管理倒序的父類資料。使用**模型繼承的原因是子類中新的特性不會影響父類模型及其已有**的行為。

ORM(關係物件對映)框架之物件導向

1.提取共性 2.分類 3.模板 約束 4.當一類函式公用同樣引數時候,可以轉變成類進行 分類 3.物件導向 資料和邏輯 屬性和行為 組合在一起 函式程式設計 資料和邏輯分離 1 特殊方法 2class foo 3def init self,name 4 self.name name56 7def ...

java之物件導向

類是用於描述同一型別的物件的乙個抽象。類中定義了這一類物件所具有的靜態和動態屬性 靜態屬性 成員變數 動態屬性 方法 1 類可以看成是一類物件的模板,物件可以看成該類的乙個具體例項 2 首先必須定義類才能有物件 說到類,就不得不說構造其構造方法了 在new乙個物件是,呼叫的就是類中的構造方法 列如p...

static之物件導向

一 靜態資料成員子 includeusing namespace std class point int point num 0 定義靜態資料成員 int main 對於類的非靜態資料成員,每個類物件都有自己的拷貝。而對於靜態資料成員被當作是類的成員。就像上述例子中,雖然定義了4個物件,但是靜態資料...