国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Pycharm開(kāi)發(fā)Django的外鍵和表關(guān)系

2021-10-09 11:11 作者:app毒  | 我要投稿

外鍵和表關(guān)系

外鍵:

在MySQL中,表有兩種引擎,一種是InnoDB,另外一種是myisam。如果使用的是InnoDB引擎,是支持外鍵約束的。外鍵的存在使得ORM框架在處理表關(guān)系的時(shí)候異常的強(qiáng)大。因此這里我們首先來(lái)介紹下外鍵在Django中的使用。


類定義為class ForeignKey(to,on_delete,**options)。第一個(gè)參數(shù)是引用的是哪個(gè)模型,第二個(gè)參數(shù)是在使用外鍵引用的模型數(shù)據(jù)被刪除了,這個(gè)字段該如何處理,比如有CASCADE、SET_NULL等。這里以一個(gè)實(shí)際案例來(lái)說(shuō)明。比如有一個(gè)User和一個(gè)Article兩個(gè)模型。一個(gè)User可以發(fā)表多篇文章,一個(gè)Article只能有一個(gè)Author,并且通過(guò)外鍵進(jìn)行引用。那么相關(guān)的示例代碼如下:


class User(models.Model):

? ? username = models.CharField(max_length=20)

? ? password = models.CharField(max_length=100)



class Article(models.Model):

? ? title = models.CharField(max_length=100)

? ? content = models.TextField()


? ? author = models.ForeignKey("User",on_delete=models.CASCADE)

以上使用ForeignKey來(lái)定義模型之間的關(guān)系。即在article的實(shí)例中可以通過(guò)author屬性來(lái)操作對(duì)應(yīng)的User模型。這樣使用起來(lái)非常的方便。示例代碼如下:


article = Article(title='abc',content='123')

author = User(username='張三',password='111111')

article.author = author

article.save()


# 修改article.author上的值

article.author.username = '李四'

article.save()

為什么使用了ForeignKey后,就能通過(guò)author訪問(wèn)到對(duì)應(yīng)的user對(duì)象呢。因此在底層,Django為Article表添加了一個(gè)屬性名_id的字段(比如author的字段名稱是author_id),這個(gè)字段是一個(gè)外鍵,記錄著對(duì)應(yīng)的作者的主鍵。以后通過(guò)article.author訪問(wèn)的時(shí)候,實(shí)際上是先通過(guò)author_id找到對(duì)應(yīng)的數(shù)據(jù),然后再提取User表中的這條數(shù)據(jù),形成一個(gè)模型。


Pycharm開(kāi)發(fā)Django的外鍵和表關(guān)系的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
绵竹市| 清徐县| 东乡县| 塘沽区| 高雄县| 西贡区| 兴和县| 南昌市| 库伦旗| 康乐县| 东方市| 东平县| 娱乐| 都江堰市| 军事| 泰安市| 乌拉特中旗| 专栏| 额济纳旗| 灌阳县| 阳曲县| 万盛区| 克什克腾旗| 来安县| 绥阳县| 太谷县| 茶陵县| 阿瓦提县| 临邑县| 仲巴县| 曲阳县| 宁阳县| 巨野县| 瑞丽市| 无极县| 乐陵市| 四会市| 毕节市| 榆林市| 杂多县| 高碑店市|