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,中文一般翻譯為 概念資料模型 概念資料模型是終端使用者對資料儲存的看法,反映了終端使用者綜合性的資訊需求,它以資料類的方式描述企業級的資...