溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

django中model定義外鍵的方法

發(fā)布時(shí)間:2020-08-13 14:24:42 來(lái)源:億速云 閱讀:205 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下django中model定義外鍵的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

定義模型類

模型類被定義在"應(yīng)用/models.py"文件中。

模型類必須繼承自Model類,位于包django.db.models中。

1) 數(shù)據(jù)庫(kù)表名

模型類如果未指明表名,Django默認(rèn)以小寫app應(yīng)用名_小寫模型類名為數(shù)據(jù)庫(kù)表名。

可通過(guò)db_table指明數(shù)據(jù)庫(kù)表名。

2) 關(guān)于主鍵

django會(huì)為表創(chuàng)建自動(dòng)增長(zhǎng)的主鍵列,每個(gè)模型只能有一個(gè)主鍵列,如果使用選項(xiàng)設(shè)置某屬性為主鍵列后django不會(huì)再創(chuàng)建自動(dòng)增長(zhǎng)的主鍵列。

默認(rèn)創(chuàng)建的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。

3) 屬性命名限制

不能是python的保留關(guān)鍵字。

不允許使用連續(xù)的下劃線,這是由django的查詢方式?jīng)Q定的。

定義屬性時(shí)需要指定字段類型,通過(guò)字段類型的參數(shù)指定選項(xiàng),語(yǔ)法如下:

屬性=models.字段類型(選項(xiàng))。

外鍵

在設(shè)置外鍵時(shí),需要通過(guò)on_delete選項(xiàng)指明主表刪除數(shù)據(jù)時(shí),對(duì)于外鍵引用表數(shù)據(jù)如何處理,在django.db.models中包含了可選常量:

CASCADE級(jí)聯(lián),刪除主表數(shù)據(jù)時(shí)連通一起刪除外鍵表中數(shù)據(jù),

PROTECT保護(hù),通過(guò)拋出ProtectedError異常,來(lái)阻止刪除主表中被外鍵應(yīng)用的數(shù)據(jù),

SET_NULL設(shè)置為NULL,僅在該字段null=True允許為null時(shí)可用,

SET_DEFAULT設(shè)置為默認(rèn)值,僅在該字段設(shè)置了默認(rèn)值時(shí)可用,

SET()設(shè)置為特定值或者調(diào)用特定方法,

DO_NOTHING不做任何操作,如果數(shù)據(jù)庫(kù)前置指明級(jí)聯(lián)性,此選項(xiàng)會(huì)拋出IntegrityError異常。

看完了這篇文章,相信你對(duì)django中model定義外鍵的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI