W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Django 當(dāng)前不提供對(duì)跨多數(shù)據(jù)庫(kù)的外鍵或多對(duì)多關(guān)系任何支持。如果已經(jīng)使用路由來(lái)分隔模型到不同數(shù)據(jù)庫(kù),那么通過(guò)這些模型來(lái)定義的任何外鍵和多對(duì)多關(guān)系必須在單一數(shù)據(jù)庫(kù)內(nèi)。
這是因?yàn)閰⒄胀暾?。為了維護(hù)兩個(gè)對(duì)象之間的關(guān)系,Djagno 需要知道這個(gè)相關(guān)對(duì)象的外鍵是否是合法的。如果外鍵被保存在單獨(dú)的數(shù)據(jù)庫(kù)上,則無(wú)法輕松評(píng)價(jià)外鍵的合法性。
如果你正在使用 Postgres,Oracle,或支持 InnoDB 的 MySQL,這是在數(shù)據(jù)庫(kù)完整性級(jí)別上強(qiáng)制執(zhí)行的——數(shù)據(jù)庫(kù)級(jí)別的鍵約束防止創(chuàng)建無(wú)法驗(yàn)證的關(guān)系。
然而,如果你正在使用 SQLite 或支持 MyISAM 表的MySQL,這就不會(huì)強(qiáng)制參照完整性;因此,你可以偽造跨數(shù)據(jù)庫(kù)的外鍵。盡管 Django 并沒(méi)有正式支持這個(gè)設(shè)置。
一些貢獻(xiàn)應(yīng)用包括模型,一些應(yīng)用依賴于其他應(yīng)用。 由于跨數(shù)據(jù)庫(kù)關(guān)系是不可能的,因此這會(huì)對(duì)如何跨數(shù)據(jù)庫(kù)拆分這些模型產(chǎn)生一些限制:
contenttypes.ContentType
?,?sessions.Session
?和?sites.Site
?中的每一個(gè)都可以存儲(chǔ)在任何數(shù)據(jù)庫(kù)中。auth
?模型 - ?User
?,?Group
?和?Permission
?- 鏈接在一起并鏈接到?ContentType
?,因此它們必須與?ContentType
?存儲(chǔ)在同一個(gè)數(shù)據(jù)庫(kù)中。admin
?依賴于?auth
?,所以它的模型必須和?auth
?在同一個(gè)數(shù)據(jù)庫(kù)中。flatpages
?和?redirects
?依賴于?sites
?,所以他們的模型必須和?sites
?在同一個(gè)數(shù)據(jù)庫(kù)中。注意:如果要將內(nèi)容類型同步到多個(gè)數(shù)據(jù)庫(kù),請(qǐng)注意它們的主鍵可能在數(shù)據(jù)庫(kù)之間不匹配。這可能導(dǎo)致數(shù)據(jù)損壞或數(shù)據(jù)丟失。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: