最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹

 更新時(shí)間:2020年03月30日 09:45:54   作者:亦非我所愿丶  
這篇文章主要介紹了對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

下面是代碼

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')

說(shuō)明

第一個(gè)class創(chuàng)建一個(gè)名稱為app_groupinfos的表

第二個(gè)class創(chuàng)建一個(gè)名稱為app_userinfos的表

1、ForeignKey 表示設(shè)置外健

2、to_field表示外健關(guān)聯(lián)的主鍵

3、on_delete有多個(gè)選項(xiàng)

在django2.0后,定義外鍵和一對(duì)一關(guān)系的時(shí)候需要加on_delete選項(xiàng),此參數(shù)為了避免兩個(gè)表里的數(shù)據(jù)不一致問(wèn)題,不然會(huì)報(bào)錯(cuò):

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

舉例說(shuō)明:

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

需要改成:

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

參數(shù)說(shuō)明:

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

CASCADE:此值設(shè)置,是級(jí)聯(lián)刪除。

PROTECT:此值設(shè)置,是會(huì)報(bào)完整性錯(cuò)誤。

SET_NULL:此值設(shè)置,會(huì)把外鍵設(shè)置為null,前提是允許為null。

SET_DEFAULT:此值設(shè)置,會(huì)把設(shè)置為外鍵的默認(rèn)值。

SET():此值設(shè)置,會(huì)調(diào)用外面的值,可以是一個(gè)函數(shù)。

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

那么,這個(gè)時(shí)候一個(gè)group就會(huì)對(duì)應(yīng)多個(gè)user,屬于一對(duì)多的類型。

當(dāng)我們查詢一個(gè)組有那些用戶的時(shí)候,就會(huì)用到當(dāng)前的外健,

創(chuàng)建記錄

并且,在class中定義了foreignKey之后,group還不存在的同時(shí),user表也因?yàn)榧s束的原因,不能被進(jìn)行創(chuàng)建

刪除記錄

并且,在class中定義了foreignKey之后,user中記錄存在的同時(shí),group表中的記錄也因?yàn)榧s束的原因,不能被進(jìn)行刪除

補(bǔ)充知識(shí):owner = models.ForeignKey(User)出現(xiàn)TypeError

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

出現(xiàn)下列錯(cuò)誤:

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

解決辦法:

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

以上這篇對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

赣榆县| 凉城县| 鄂尔多斯市| 孙吴县| 长兴县| 绥阳县| 宁陵县| 黄陵县| 郓城县| 剑河县| 霍城县| 平定县| 太和县| 京山县| 吴忠市| 安国市| 富川| 秦皇岛市| 曲靖市| 将乐县| 新源县| 江永县| 习水县| 玉环县| 永济市| 邢台市| 德安县| 谢通门县| 永善县| 东方市| 鹿邑县| 建阳市| 旌德县| 阆中市| 民丰县| 开远市| 天气| 灵川县| 于都县| 项城市| 浦北县|