日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django框架(5.django中模型类建立关系和多表关系查询)

發(fā)布時(shí)間:2024/9/30 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django框架(5.django中模型类建立关系和多表关系查询) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.建立好模型類:

from django.db import models# 設(shè)計(jì)和模型對(duì)應(yīng)的類,(模型類) # Create your models here.# 一類 # 圖書類 class BookInfo(models.Model):"""圖書模型類"""# CharField是字符串類型,max_length指定字符串的最大長(zhǎng)度btitle = models.CharField(max_length=20) # 圖書名稱# DateFields是日期類型bpub_date = models.DateField()# 一個(gè)圖書類對(duì)應(yīng)多個(gè)人物類 # 多類 # 人物類 # 人物名hname、性別hgender、年齡hage、備注hcomment # 關(guān)系屬性 hbook,建立圖書類和人物類之間的一對(duì)多關(guān)系 class FigureInfo(models.Model):"""人物模型類"""hname = models.CharField(max_length=20) # 人物名稱# 性別,BooleanField說(shuō)明是bool類型,default指定默認(rèn)值,False代表男hgender = models.BooleanField(default=False)# 備注hcomment = models.CharField(max_length=128)"""關(guān)系屬性: 通過(guò)ForeignKey("模型類名")來(lái)指定一對(duì)多的關(guān)系定義外鍵和一對(duì)一關(guān)系的時(shí)候需要加on_delete選項(xiàng),此參數(shù)為了避免兩個(gè)表里的數(shù)據(jù)不一致問(wèn)題關(guān)系屬性對(duì)應(yīng)的表的字段名格式: 關(guān)系屬性名_id"""hbook = models.ForeignKey("BookInfo",on_delete=models.CASCADE)

Django2.0之后,設(shè)置外鍵需要注意:

?定義外鍵和一對(duì)一關(guān)系的時(shí)候需要加on_delete選項(xiàng),此參數(shù)為了避免兩個(gè)表里的數(shù)據(jù)不一致問(wèn)題?on_delete=models.CASCADE

生成表

2.項(xiàng)目路徑的終端下使用命令生成遷移文件

? ??python manage.py makemigrations??

3. 項(xiàng)目路徑的終端下使用命令生成數(shù)據(jù)庫(kù)的表

? ?python manage.py migrate

4. 可以在migrations的包下查看自己相關(guān)的表的屬性,默認(rèn)是保存到sqlite數(shù)據(jù)庫(kù)中的

? ??關(guān)系屬性對(duì)應(yīng)的表的字段名格式: 關(guān)系屬性名_id

? SQLiteExpertPro查看數(shù)據(jù)庫(kù):??

5. 現(xiàn)在兩個(gè)空的表已經(jīng)生成好,

??

?進(jìn)入shell中,進(jìn)行增刪改查,多表關(guān)系查詢

1.添加數(shù)據(jù)到數(shù)據(jù)庫(kù)的表中

通過(guò)關(guān)聯(lián)屬性指定關(guān)聯(lián)的關(guān)系

? ? 即看有關(guān)聯(lián)屬性這個(gè)模型類的對(duì)象,是屬于被關(guān)聯(lián)的模型類的哪個(gè)對(duì)象

例如 ,? 有關(guān)聯(lián)屬性的模型類的對(duì)象-->是人物孫悟空的? ? ?則和他要關(guān)聯(lián)的就是沒有關(guān)聯(lián)屬性的模型類對(duì)象-->是書籍西游記

? ?有關(guān)聯(lián)屬性的模型類的對(duì)象-->是人物宋江的? ? ?則和他要關(guān)聯(lián)的就是沒有關(guān)聯(lián)屬性的模型類對(duì)象-->是書籍水滸傳

2. 查看數(shù)據(jù)庫(kù):

? FigureInfo表中的hbook_id 的值就對(duì)應(yīng)它屬于的那個(gè)圖書

BookInfoFigureInfo

?可以繼續(xù)添加數(shù)據(jù) ,? 注意關(guān)聯(lián)屬性的值

?? ? ? ?

3. shell中進(jìn)行增刪改查

? 參考 :? ?https://blog.csdn.net/wei18791957243

查看和圖書關(guān)聯(lián)的人物的信息

? ? ?被關(guān)聯(lián)的模型類對(duì)象.有關(guān)聯(lián)屬性的模型類名_set.all()? ? ? # 返回有關(guān)聯(lián)的 模型類的對(duì)象的列表

關(guān)系操作的關(guān)系說(shuō)明:

總結(jié)

以上是生活随笔為你收集整理的Django框架(5.django中模型类建立关系和多表关系查询)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。