詳解解Django 多對多表關(guān)系的三種創(chuàng)建方式
1、方式一:自動創(chuàng)建
# django orm 自動幫我們創(chuàng)建第三張表,我的app名字是app01, 表名為:app01_book_authors
# 這種方式可以讓Django迅速的幫我們建一張關(guān)系表出來,好處是可以通過這張表進(jìn)行跨表查詢,壞處是一張?zhí)摂M表,拓展性差。
# 書籍表
class Book(models.Model):
name = models.CharField(max_length=32)
authors = models.ManyToManyField(to='Author')
# 作者表
class Author(models.Model):
name = models.CharField(max_length=32)
2、方式二:純手動創(chuàng)建
# 這種方式無法通過orm跨表查詢(不建議使用)
# 表1
class Book(models.Model):
name = models.CharField(max_length=32)
# 表2
class Author(models.Model):
name = models.CharField(max_length=32)
# 表3
class Book2Author(models.Model):
book = models.ForeignKey(to='Book')
author = models.ForeignKey(to='Author')
info = models.CharField(max_length=32)
3、方式三:半自動創(chuàng)建
# 可擴(kuò)展性高,并且能夠符合orm查詢
class Book(models.Model):
name = models.CharField(max_length=32)
# 第三種創(chuàng)建表的方式
authors = models.ManyToManyField(to='Author', through='Book2Author', through_fields=('book', 'author'))
# through 告訴 django orm 書籍表和作者表的多對多關(guān)系是通過 Book2Author 表來記錄的
# through fields 告訴 django orm 記錄關(guān)系是用 Book2Author 表中的 book 字段 和 author字段 來記錄的
# 此關(guān)系在哪張表寫的,through_fields中就優(yōu)先寫哪張表(那個字段)的小寫
# 但是,多對多字段的 add set remove clear 四個方法就用不了了
class Author(models.Model):
name = models.CharField(max_length=32)
class Book2Author(models.Model):
book = models.ForeignKey(to='Book')
author = models.ForeignKey(to='Author')
info = models.CharField(max_length=32)
到此這篇關(guān)于詳解解Django 多對多表關(guān)系的三種創(chuàng)建方式的文章就介紹到這了,更多相關(guān)Django創(chuàng)建多對多表關(guān)系內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)據(jù)類型轉(zhuǎn)換詳解
本篇文章里小編給大家整理的是關(guān)于Python中常用數(shù)據(jù)類型之間的轉(zhuǎn)換相關(guān)知識點(diǎn),有需要的朋友們可以學(xué)習(xí)下,希望能夠給你帶來幫助2021-10-10
詳解pyqt5 動畫在QThread線程中無法運(yùn)行問題
這篇文章主要介紹了詳解pyqt5 動畫在QThread線程中無法運(yùn)行問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
如何用C代碼給Python寫擴(kuò)展庫(Cython)
這篇文章主要介紹了如何用C代碼給Python寫擴(kuò)展庫(Cython),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
python使用隱式循環(huán)快速求和的實(shí)現(xiàn)示例
這篇文章主要介紹了python使用隱式循環(huán)快速求和的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
python mysql實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python mysql實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
python實(shí)現(xiàn)柵欄加解密 支持密鑰加密
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)柵欄加解密,支持密鑰加密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
python運(yùn)用pygame庫實(shí)現(xiàn)雙人彈球小游戲
這篇文章主要為大家詳細(xì)介紹了python運(yùn)用pygame庫實(shí)現(xiàn)雙人彈球小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
淺談關(guān)于Python3中venv虛擬環(huán)境
這篇文章主要介紹了淺談關(guān)于Python3中venv虛擬環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08

