django orm 建立表關係

2022-08-31 22:36:19 字數 1952 閱讀 8425

"""

表與表之間的關係

一對多多對多

一對一沒有關係

判斷表關係的方法:換位思考

"""圖書表

出版社表

作者表作者詳情表

"""圖書和出版社是一對多的關係 外來鍵字段建在多的那一方 book

圖書和作者是多對多的關係 需要建立第三張表來專門儲存

作者與作者詳情表是一對一

"""from

django.db import models

# create your models here.

# 建立表關係 先將基表建立出來 然後再新增外來鍵字段

class

book(models.model):

title = models.charfield(max_length=32

) price = models.decimalfield(max_digits=8,decimal_places=2

) # 總共八位 小數點後面佔兩位

"""圖書和出版社是一對多 並且書是多的一方 所以外來鍵字段放在書表裡面

""" publish = models.foreignkey(to='

publish

') # 預設就是與出版社表的主鍵欄位做外來鍵關聯

"""如果字段對應的是foreignkey 那麼會orm會自動在字段的後面加_id

如果你自作聰明的加了_id那麼orm還是會在後面繼續加_id

後面在定義foreignkey的時候就不要自己加_id

""""""

圖書和作者是多對多的關係 外來鍵字段建在任意一方均可 但是推薦你建在查詢頻率較高的一方

""" authors = models.manytomanyfield(to='

author')

"""authors是乙個虛擬字段 主要是用來告訴orm 書籍表和作者表是多對多關係

讓orm自動幫你建立第三張關係表

"""class

publish(models.model):

name = models.charfield(max_length=32

) addr = models.charfield(max_length=32

)class

author(models.model):

name = models.charfield(max_length=32

) age =models.integerfield()

"""作者與作者詳情是一對一的關係 外來鍵字段建在任意一方都可以 但是推薦你建在查詢頻率較高的表中

""" author_detail = models.onetoonefield(to='

authordetail')

"""onetoonefield也會自動給字段加_id字尾

所以你也不要自作聰明的自己加_id

"""class

authordetail(models.model):

phone =models.bigintegerfield() # 或者直接字元型別

addr = models.charfield(max_length=32

)"""

orm中如何定義三種關係

publish = models.foreignkey(to='

publish

') # 預設就是與出版社表的主鍵欄位做外來鍵關聯

authors = models.manytomanyfield(to='

author')

author_detail = models.onetoonefield(to='

authordetail')

foreignkey

onetoonefield

會自動在字段後面加_id字尾

"""# 在django1.x版本中外鍵預設都是級聯更新刪除的

Django ORM 關係管理物件的建立

from django.db import models class book models.model title models.charfield max length 32 pub models.foreignkey publisher on delete models.cascade cla...

Django ORM(物件關係對映)

簡而言之,orm就是物件導向語言使用關係型資料庫的中轉站。orm能使開發人員專注於業務邏輯,減少開發人員的負擔,但是orm的缺點也很明顯,效率不高並且無法實現複雜的sql功能。orm不能完全替代sql。from django.db import models create your models h...

Django ORM建立與簡單應用CRUD

django預設使用sqlite資料庫,要操作mysql,要利用pymysql 1.要建立資料庫 2.配置settings.py databases 3.在 init 載入pymysql python m django version 3.0.3 載入可能出現錯誤,注釋掉判斷的語句就ok impor...