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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Django之model补充:一对多、跨表操作

發(fā)布時(shí)間:2023/11/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django之model补充:一对多、跨表操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

表結(jié)構(gòu)概述

model.py :

class Something(models.Model):name = models.CharField(max_length=32)class UserType(models.Model):caption = models.CharField(max_length=32)s = models.ForeignKey('Something')# 超級管理員,普通用戶,游客,黑河class UserInfo(models.Model):user = models.CharField(max_length=32)pwd = models.CharField(max_length=32)user_type = models.ForeignKey('UserType')# user_type_id

關(guān)系:

  • something --> usertype 一對多
  • usertype --> userinfo 一對多

表單中的數(shù)據(jù):

something:

idname
1something1
2something2

usertype:

idcaptionsomething_id
1超級管理員1
2普通管理員1
3黑客2

userinfo:

iduserpwdusertype_id
1alex1231
2eric1232

簡要說明

Django中:

  • 某表中foreignkey關(guān)聯(lián)另一張表后,會(huì)自動(dòng)在本表單中創(chuàng)建一個(gè)名稱為另一張表的列:xxx_id
  • 一對多創(chuàng)建時(shí),foreignkey需要使用在一對多中的多的表單中
  • 查詢

    userinfo_obj = UserInfo.objects.all()

    結(jié)果為一個(gè)類的列表,類似:[UserInfo對象,UserInfo對象,]

    以上語句會(huì)得到的數(shù)據(jù)為一個(gè)元素為查詢目標(biāo)表單對象的列表,所以例子中的userinfo_obj為一個(gè)queryset對象我們可以通過`print(userinfo_obj.query)來查看SQL語句.

    取值

    比較簡單:

    id = userinfo_obj[0].user.id user = userinfo_obj[0].user.user pwd = userinfo_obj[0].user.pwd ...

    values與vlue_list

    queryset = UserInfo.objects.all().values('user') 結(jié)果: [{‘user’: 'alex'},{‘user’: 'eirc'}]=================================queryset = UserInfo.objects.all().value_list('user') 結(jié)果: [('alex'),('eirc')]

    查詢中:

    • 使用values('列名稱'),結(jié)果為字典組成的列表
    • 使用value_list('列名稱'),結(jié)果為元組組成的列表

    所以,未來操作中,我們可以使用這兩個(gè)方便的東西來遍歷字典取值還是使用元組取值

    一對多操作

    創(chuàng)建數(shù)據(jù)

    一般我們是來這么做的:

    UserInfo.objects.create(user='cc','pwd' = '123'user_type=UserType.objects.get(id=2))

    很麻煩吧,其實(shí)是兩步操作了,但因?yàn)榻ū頃r(shí)有了user_type_id,所以我們可以這么搞:

    UserInfo.objects.create(user='cc','pwd'='123',user_type_id=2)

    很簡單吧...

    數(shù)據(jù)查詢

    單表查詢:

    UserInfo.objects.filter(user='alex')

    反向查詢

    需求:查詢所有用戶類型等于 普通用戶 的所有用戶名和密碼

    兩步操作:

    uid = UserType.objects.filter(caption='普通用戶') userinfo_obj = UserInfo.objects.filter(user_type_id=uid)

    兩步操作很簡單,那就引出了神奇的雙下劃線:__

    queryset = UserInfo.objcets.filter(user_type__caption='普通用戶')###結(jié)果 [UserInfo對象,UserInfo對象,UserInfo對象,] row = queryset[0] #取到一個(gè)元素 user = row.user password = row.pwd #取到具體信息 row.user_type.id row.user_type.caption

    總結(jié)下:

    • 一對多中,正下查詢使用foreignkey 的 _id 查詢:row.外鍵字段.外鍵表的字段
    • 一對多中反向查詢,首先還是在在一對多中的多的表單中查詢,可以使用__連接相關(guān)表中的列名去查詢:row__

    其實(shí)感覺__有點(diǎn)像關(guān)系連線的意思

    queryset = UserInfo.objects.filter(user_type__caption='普通用戶').values('user','pwd','user_type__caption')####結(jié)果 [{'user':'alex','pwd':'123','user_type__caption':'普通用戶'}{'user':'eric','pwd':'123','user_type__caption':'普通用戶'}]

    三張表跨表操作

    跟上面一樣,直接用__即可

    queryset = UserInfo.objects.filter(user_type__s__name='xxx')

    進(jìn)階操作

    獲取個(gè)數(shù):

    UserInfo.objects.filter(name = 'alex').count()

    大于小于,還是使用雙下劃線__

    UserInfo.objects.filter(id__gt=2) #獲取ID大于2的數(shù)據(jù) UserInfo.objects.filter(id__lt=5) #獲取ID小余5的數(shù)據(jù) UserInfo.objects.filter(id__gt=2,id__lt=5) #獲取ID大于2小于5的數(shù)據(jù)

    in:

    UserInfo.objects.filter(id__in=[11,22,33]) #獲取id等于11、22、33的數(shù)據(jù) UserInfo.objects.exclude(id__in=[11,22,33]) #not in

    contains(包含):

    UserInfo.objects.filter(name__contains="ven") #獲取name列中包含'ven'的數(shù)據(jù) UserInfo.objects.filter(name__icontains="Ven") #獲取name列中包含'ven'的數(shù)據(jù),對大小寫不敏感UserInfo.objects.exclude(name__icontains="ven") #不包含

    range:

    UserInfo.objects.filter(id__range=[1,10]) #范圍,between and ,獲取id在1到10范圍中的數(shù)據(jù)

    轉(zhuǎn)載于:https://www.cnblogs.com/ccorz/p/5864470.html

    總結(jié)

    以上是生活随笔為你收集整理的Django之model补充:一对多、跨表操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国产精品1234 | 在线观看网站av | 国产高潮视频在线观看 | 国产正在播放 | 成人网在线免费观看 | 日韩一级在线视频 | av在线影音 | 新天堂av | av一本在线| 国产黄色免费视频 | 动漫裸体无遮挡 | 久久午夜鲁丝 | 天天摸日日干 | 欧美一级淫片 | 伊人久久激情 | 在线视频亚洲欧美 | 人妖一区 | 欧美国产专区 | 精品自拍av| 麻豆国产精品视频 | 欧美乱妇18p | 国内精品久久久久久久 | 窝窝午夜精品一区二区 | 淫片一级国产 | 一节黄色片 | 色狠狠一区二区三区香蕉 | 中文字幕一区二区三区人妻 | 免费欧美大片 | 国产女主播在线播放 | 欧美a级大片 | 天天综合久久综合 | 中国av片| 黄色不卡av | 日韩高清在线观看一区 | 青青草原亚洲 | 国产精品免费久久 | 诱夫1v1高h | 女人脱裤子让男人捅 | 亚洲视频一区二区三区在线观看 | www.啪啪.com| 波多野一区二区三区 | xxxx精品| 国产精品yy | 国产免费毛卡片 | 中文亚洲欧美 | 亚洲天堂色图 | 嫩模一区二区三区 | 久久av红桃一区二区小说 | 伊人成人在线观看 | 色妞ww精品视频7777 | 亚洲欧美日韩不卡 | 精品国产一区二区三区久久久蜜月 | 亚洲男女视频 | 欧美91精品久久久久国产性生爱 | 欧美性猛交xxxx免费看 | 欧美经典一区二区三区 | 91视频入口 | 天天干天天操天天玩 | 久久在线中文字幕 | 探花系列在线观看 | 正在播放老肥熟妇露脸 | 美女被男人c | 国产一区二区三区精品在线 | 中文在线免费视频 | 国产一二三区免费视频 | 熟妇人妻中文字幕无码老熟妇 | 老色批永久免费网站www | 911毛片 | 国产3区 | 91精品国产综合久 | 少妇激情网 | 婷婷激情在线 | 2020国产在线| 日韩特黄一级片 | 欧美精品 日韩 | 亚洲一区二区三区激情 | 天堂а√在线中文在线新版 | 波多野结衣一区在线 | 亚洲视频色图 | 卡一卡二在线视频 | 先锋影音av资源在线 | 欧美性xxxx | 免费毛片一级 | 99热免费观看| 歪歪视频在线观看 | 99热首页 | 综合爱爱网 | 可以免费观看的av网站 | 日日色综合 | 又黄又爽的网站 | 国产艳妇疯狂做爰视频 | h片在线观看| 亚洲成人激情在线 | 免费中文字幕日韩 | 午夜精品福利一区二区 | 亚洲成av人影院 | 99精品一区 | 精品一区二区三区欧美 | 一级精品毛片 |