最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
织金县| 西乡县| 达尔| 湘乡市| 林甸县| 新营市| 筠连县| 广灵县| 吉木乃县| 舞钢市| 昂仁县| 东光县| 尚义县| 黔西县| 德安县| 正安县| 同仁县| 汾阳市| 连云港市| 临汾市| 德钦县| 东丰县| 泽州县| 新兴县| 皋兰县| 深水埗区| 宁津县| 广宗县| 筠连县| 平果县| 柏乡县| 凤城市| 静乐县| 布尔津县| 福鼎市| 勃利县| 大渡口区| 宜阳县| 沧源| 霸州市| 南川市|