Django 的多對多關係範例

首頁 >> 結帳英文 >> Django 的多對多關係範例

Django ORM ( Object-relational mapping ) 提供了簡便的方法存取資料庫,

之前也提到過 Django 資料庫的基礎

在資料庫模型中,

部分欄位是有相關性的,

在 Django 中分為一對一,多對多,一對多三種關係,

今天要來介紹的就是:

Django 的多對多關係範例

多對多關係的例子很多,

以書籍分類來說,

一本書可以有很多種分類,

而一個分類可以有很多書,

這就是屬於多對多關係。


舉個例子來說,

笑傲江湖在分類上屬於武俠小說類,

而武俠小說類除了笑傲江湖以外還有射鵰英雄傳…等等,

所以分類名與書名間就是多對多關係。

上圖為今天的範例,

課程與學生屬於多對多關係,

故在定義課程時,設定一個欄位為 ManyToManyField,

系統會自動建立一個中間表,

這個中間表定義了 User 與 Tcourse 間的關係,

至於兩者關係的處理方式,

可透過 add, remove, set, clear 等等,

來新增、刪除、設定、清除。


使用方式可分為正向查詢與反向查詢,

正向查詢的用法:

以上述例子為範例,

查詢修習課程 course 下的所有學生

alluser = Tcourse.objects.get(course_name='course').tstaff.all()

反向查詢:

查詢學生 xuser 修習的所有課程

allcourse = User.objects.get(username='xuser').tcourse_set.all()

至於多對多關係的建立,

可使用

Tcourse.objects.get(course_name='course').tstaff.add(tmp_user)

這邊指的是幫學生 tmp_user 加選課程名稱為 course 的課程

退選課程則使用:

Tcourse.objects.get(course_name='course').tstaff.remove(tmp_user)

當然其他還有許多應用,

甚至還有一對多,一對一關係,

請待下回分解,

這裡是不及格研究室

今天的主題是:

Django 的多對多關係範例



================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================

guangyaw

重點主題: 程式設計: Python , Django,Android 工具與軟體: Open edX,Linux工具,Blender教學 分享各地美景與產品使用心得,遊戲實況,甚至影視戲劇等, 您的訂閱就是頻道成長的原動力。 YouTube 頻道: https://youtube.com/xyawli

You may also like...

發表迴響