亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django 2.x版本中models.ForeignKey()外鍵有什么用

發布時間:2021-07-02 10:00:12 來源:億速云 閱讀:157 作者:小新 欄目:開發技術

這篇文章主要介紹django 2.x版本中models.ForeignKey()外鍵有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

下面是代碼

class GroupInfos(models.Model):
 uid = models.AutoField(primary_key=True)
 caption = models.CharField(max_length=32, unique=True)
 ctime = models.DateTimeField(auto_now_add=True, null=True)
 uptime = models.DateTimeField(auto_now=True, null=True)

class UserInfos(models.Model):
 username = models.CharField(max_length=32, blank=True, verbose_name='用戶名')
 password = models.CharField(max_length=64, help_text='text')
 email = models.EmailField(max_length=60)
 user_group = models.ForeignKey('GroupInfos', to_field='uid', on_delete='CASCADE')

說明

第一個class創建一個名稱為app_groupinfos的表

第二個class創建一個名稱為app_userinfos的表

1、ForeignKey 表示設置外健

2、to_field表示外健關聯的主鍵

3、on_delete有多個選項

在django2.0后,定義外鍵和一對一關系的時候需要加on_delete選項,此參數為了避免兩個表里的數據不一致問題,不然會報錯:

TypeError: init() missing 1 required positional argument: ‘on_delete'

舉例說明:

user=models.OneToOneField(User)
owner=models.ForeignKey(UserProfile)

需要改成:

user=models.OneToOneField(User,on_delete=models.CASCADE) --在老版本這個參數(models.CASCADE)是默認值
owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE) --在老版本這個參數(models.CASCADE)是默認值

參數說明:

on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五個可選擇的值

CASCADE:此值設置,是級聯刪除。

PROTECT:此值設置,是會報完整性錯誤。

SET_NULL:此值設置,會把外鍵設置為null,前提是允許為null。

SET_DEFAULT:此值設置,會把設置為外鍵的默認值。

SET():此值設置,會調用外面的值,可以是一個函數。

一般情況下使用CASCADE就可以了。

那么,這個時候一個group就會對應多個user,屬于一對多的類型。

當我們查詢一個組有那些用戶的時候,就會用到當前的外健,

創建記錄

并且,在class中定義了foreignKey之后,group還不存在的同時,user表也因為約束的原因,不能被進行創建

刪除記錄

并且,在class中定義了foreignKey之后,user中記錄存在的同時,group表中的記錄也因為約束的原因,不能被進行刪除

補充知識:owner = models.ForeignKey(User)出現TypeError

owner = models.ForeignKey(User)出現錯誤 TypeError: init() missing 1 required positional argument: ‘on_delete'
owner = models.ForeignKey(User)

出現下列錯誤:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

解決辦法:

owner = models.ForeignKey(User, on_delete=models.CASCADE)

以上是“django 2.x版本中models.ForeignKey()外鍵有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浦东新区| 依兰县| 运城市| 宁河县| 平顺县| 夏邑县| 竹溪县| 双流县| 夏河县| 古交市| 镇原县| 专栏| 平利县| 南陵县| 阿克陶县| 合肥市| 黄陵县| 潞城市| 崇明县| 临颍县| 阆中市| 吉木萨尔县| 偏关县| 大洼县| 苍南县| 固镇县| 樟树市| 嵊泗县| 舒兰市| 密云县| 苗栗县| 射洪县| 桂平市| 祁门县| 福安市| 丽江市| 兖州市| 芦山县| 辽阳市| 牡丹江市| 涟水县|