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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ORM多表查询——关联查询

發(fā)布時(shí)間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORM多表查询——关联查询 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、關(guān)聯(lián)查詢:

通過父表參數(shù)獲取從表數(shù)據(jù),通過從表參數(shù)獲取父表數(shù)據(jù)

從表查詢主表中的數(shù)據(jù)

附件:數(shù)據(jù)表截圖

項(xiàng)目表

?接口表

?現(xiàn)在要實(shí)現(xiàn)的需求如下:

1、查詢項(xiàng)目名稱中包含’搜狗‘的所屬接口信息:

分析:獲取的是接口信息,所以Interfaces開頭進(jìn)行查詢

?2、查詢項(xiàng)目負(fù)責(zé)人中包含’zilv‘的所屬接口信息

分析:獲取的是接口信息,所以Interfaces開頭進(jìn)行查詢

主表查詢從表中的數(shù)據(jù)

3、查詢接口名稱包含“收藏”所屬的項(xiàng)目名稱

分析:獲取項(xiàng)目信息,所以Projects開頭進(jìn)行查詢

?查詢格式為:

關(guān)聯(lián)字段名稱__關(guān)聯(lián)模型類中的字段名稱__查詢類型

二、通過從表模型對(duì)象(已經(jīng)獲取到),如何獲取父表數(shù)據(jù)

1、Interfaces.objects.filter(name__contains='收藏')[0].projects

? 2、可以通過外鍵字段先獲取父表模型對(duì)象(interfaces_obj.projects)

interfaces_obj=Interfaces.objects.get(id=1)

interfaces_obj.projects.name

三、通過父表模型對(duì)象(已經(jīng)獲取到),如何獲取從表數(shù)據(jù)

1、Projects.objects.filter(name__contains='搜狗')[0].interfaces.all()

?2、projects_obj=Projects.objects.get(id=1)

projects_obj.interfaces_set.all()

默認(rèn)可以通過從表模型類名小寫_set,返回manager對(duì)象,可以進(jìn)一步使用filter進(jìn)行過濾

如果在從表模型類的外鍵字段指定了related_name參數(shù),那么會(huì)使用related_name指定參數(shù)作為名稱

projects_obj=Projects.objects.get(id=1)

projects_obj.interfaces.all()

四、排序

可以使用QuerySet(manager對(duì)象).order_by('字段名1','字段名2','-字段名3')

默認(rèn)為升序asc,可以在字段名稱前添加“-”,那么為desc降序

升序(默認(rèn)為升序)

Projects.objects.filter(Q(name__contains='2') | Q(leader='kb')).order_by('name')

降序

Projects.objects.filter(Q(name__contains='2') | Q(leader='kb')).order_by('-name')

?排序(降序、升序混合使用)

qs = Projects.objects.filter(Q(name__contains='2') | Q(leader='kb')).order_by('-name','leader')

總結(jié)

以上是生活随笔為你收集整理的ORM多表查询——关联查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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