Django框架(5.django中模型类建立关系和多表关系查询)
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)題。
- 上一篇: Django框架(4.django中进入
- 下一篇: Django框架(6.django后台管