Django中ORM建立表關係

2022-09-24 04:24:08 字數 2898 閱讀 6746

一:django中orm建立表關係

1.表與表之間的關係

1.表與表之間的關係

一對多一對一

多對多2.操作目標條件:

圖書表出版社表

作者表作者詳情表

3.外來鍵關聯

一對多:

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

多對多:

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

一對一:

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

4.表關係的判斷

換位思考

orm針對外來鍵字段的建立位置

1.不常用的資料我們稱之為冷資料

2.常用的資料我們稱之為熱資料

一對多: 外來鍵建立在多的一方

一對一: 建在任何一方都可以 但是推薦建在查詢頻率較高的表中

多對多: orm自動幫你建立第三張關聯表

2.orm中如何定義三種關係
1.一對多

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

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

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

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

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

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

2.多對多

# 自動幫你建立書籍和作者的第三張表

authors = models.manytomanyfield(to='author')

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

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

3.一對一

# 作者與作者詳細是一對一的關係 外來鍵建在查詢頻率較高的表中

author_detail = models.onetoonefield(to='authordetail')

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

所有不要自作聰明 自己加字尾_id

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

foreignkey

onetoonefield

3.orm建立表關係models.py檔案
from django.db import models

# 圖書表

class book(models.model):

# title varchar(32)

title = models.charfield(max_length=32)

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

print = 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 **

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

# addr 位址

addr = models.charfield(max_length=32)

4.在settings.py配置檔案修改配置
1.在settings.py配置檔案修改配置

"""django預設使用自帶的sqlite3"""

databases =

}

5.在專案資料夾或者應用資料夾內的__init__.py檔案中書寫固定的**
2.在專案資料夾或者應用資料夾內的__init__.py檔案中書寫固定的**

import pymysql

pymysql.install_as_mysqldb()

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

django中orm建立表的對應關係

django中的orm支援幫我們建立表與表之間的對應關係。一對一,一對多,及多對多。如我們要建立 圖書表與出版社表是一對多的關係。假設一本書只能由乙個出版社出版 圖書表與作者表之間是多對多的關係。作者表與作者詳情表之間是一對一的關係。models.py class book models.model...

Django中的ORM(物件關係對映)

django與資料庫的命令互動主要是通過manage.py,常用的命令就是manage.py syncdb,可以將model中不在資料庫中存在的表給建立完成,但是只能建立新的資料表或者列,如果model中將某個已經建立的資料表刪除,syncdb是不會進行同步刪除的操作的。為什麼要使用orm orm是...

django之ORM物件關係對映

orm 物件關係對映,物件關係對映的意思就是在python中 類對應資料庫中的 物件對應 中的記錄。屬性對應 中的字段。orm通過讓我們程式設計師使用物件導向的思想來運算元據庫,不用直接再編寫sql語句。提高開發效率。資料建模 簡單地說就是使用資料庫來描述我們的業務邏輯。teacher表 name ...