資料模型之間的關係

2021-08-20 06:48:19 字數 1741 閱讀 8326

models之間的關係簡單的分為一對一(onetoonefield),一對多(foreignkey),多對多(manytomanyfield)三種

構建這種關係相對簡單,只需要在models中宣告即可,主要是在呼叫和查詢的時候有些困難,所以這裡主要說說查詢相關

查詢和引用一般是在檢視函式views中實現

1.全部展示

def index(request):

abs=absmodel.objects.all()

2.根據條件查詢,一般是id,而id大多是由前端傳過來的,通過request請求獲取到id

def index(request):

abs=absmodel.objects.get(id=id)

3.根據主表資訊獲取從表內容

這裡假設amodel是主表,bmodel是從表,已經獲取到了主表的name=『張三』資訊,如何獲取從表中name對應的詳細資訊呢

#先獲取name=張三這條資訊的資料

a=amodel.object.get(name='zhangsan')

#然後根據a.id獲取b表的內容

res=bmodel.object.get(a_id=a.id)

4.根據從表資訊獲得主表內容

這裡假設amodel是主表,bmodel是從表,已經獲取到了從表的name=『張三』資訊,如何獲取主表中班級對應的詳細資訊呢

#首先根據name資訊獲取從表資料

b1=bmolde.object.get(name='zhangsan')

#獲取主表的name屬性

aname=b1.amodel.aname

b1.amodel是乙個objects物件
4.1.獲取相同資訊

res=bmodel.object.filter(aname=b1.aname)
這裡設定了在從表bmodel中的條件,也就是aname=b1.aname。而b1是根據name獲得的

4.2.獲取從表的所有資訊

#首先根據name資訊獲取從表資料

b1=bmolde.object.get(name='zhangsan')

#amodel.bmodel_set a表對應的b表集合

res=b1.amodel.bmodel_set.all()

5.根據主表資訊找從表資訊

#先根據已知資訊獲得資訊所在的主表資訊

a1=amodel.object.get(name='zhangsan')

再根據外來鍵獲得從表的資訊

res=bmoldel.object.fieter(aname=a1)

也可以寫成

#先根據已知資訊獲得資訊所在的主表資訊

a1=amodel.object.get(name='zhangsan')

再根據外來鍵獲得從表的資訊

res=a1.bmodel_set.all()

當然這裡獲取到的都是從表的完整資訊,也可以進行篩選,比如在
res=a1.bmodel_set.all()
這裡,all()也可以需求改為filter或者get

刪除的時候要先刪除從表,再刪除主表

使用

bmodel.objects.get(name='zhangsan').delete()

關係型資料模型

關係模型是由若干個關係模式組成的集合,關係模式的例項稱為關係,每個關係實際上是一張二維 關係模型用鍵導航資料,其 簡單,使用者只需用簡單的查詢語句就可以對資料庫進行操作,並不涉及儲存結構 訪問技術等細節。sql語言是關聯式資料庫的代表性語言,已經得到了廣泛的應用。典型的關聯式資料庫產品有db2 or...

關係資料模型

一 資料結構 關係資料模型是有若干個關係模式組成的集合。關係模式的例項成為關係。每個關係可看為乙個二維表,表的行稱為元組,用來標識實體集中的乙個實體 表的列稱為屬性,列名即為屬性名,屬性名不能相同。關係的描述稱為關係模式 relation schema 它可以形式化地表示為 r u,d,dom,f ...

概念資料模型 邏輯資料模型 物理資料模型

概念資料模型設計與邏輯資料模型設計 物理資料模型設計是資料庫及資料倉儲模型設計的三個主要步驟。在資料倉儲領域有乙個概念叫conceptual data model,中文一般翻譯為 概念資料模型 概念資料模型是終端使用者對資料儲存的看法,反映了終端使用者綜合性的資訊需求,它以資料類的方式描述企業級的資...