django中related_name的用法說明
我們從一個(gè)簡單的事說起:
吃貨君到水果攤撿漏買了兩種水果,分別是人參果和蟠桃;后來水果攤主冥冥中感覺自己遺失了重寶,似乎和一個(gè)100歲的老爺爺有關(guān),翻看自己的收款賬單,當(dāng)看到吃貨君的賬單時(shí)心頭一緊,就是他買走了我的寶貝,我就要看看他買了我的什么寶貝! 店主通過吃貨君的名字找到了他買的水果,發(fā)現(xiàn)竟然有萬年蟠桃以及億年人參過后,嚎啕大哭起來?。?!
吃飯君是走了什么運(yùn)呢???
下面我們根據(jù)上面的小情節(jié)定義兩個(gè)模型,分別是買主模型以及水果模型,一個(gè)買主對(duì)應(yīng)多個(gè)水果模型,簡單的一對(duì)多模型:
class Buyer(models.Model): name = models.CharField(verbose_name='買主名', max_length=10) Alipay_id = models.CharField(verbose_name='支付寶賬號(hào)') age = models.IntegerField(verbose_name='買主年齡',blank = True) class Fruit(models.Model): buyer = models.ForeignKey(Buyer, related_name='buyer_fruit') fruit_name = models.CharField(verbose_name='水果名', max_length=10) weight = models.FloatField(verbose_name='水果重量')
通常,我們要查詢買主買了哪些水果,首先要根據(jù)條件找到買主信息,然后根據(jù)買主信息找到買主所購買的水果,本例中如下:
#首先獲得水果模型中外鍵指向的表中對(duì)象: buyer = Buyer.objects.filter(age = 100).first() #然后通過‘_set'方法獲得子表中的數(shù)據(jù): fruits = buyer.fruit_set.all() """ django 默認(rèn)每個(gè)主表的對(duì)象都有一個(gè)是外鍵的屬性,可以通過它來查詢到所有屬于主表的子表的信息。 這個(gè)屬性的名稱默認(rèn)是以子表的名稱小寫加上_set()來表示,這里我們的主表是buyer,字表是fruit,所以主表外鍵的屬性就是fruit_set """
上面的fruit_set是django為對(duì)象buyer默認(rèn)創(chuàng)建的外鍵的屬性,個(gè)人建議采用自定義的方式定義主表的外鍵,這樣使用時(shí)更熟悉一些吧!
而related_name就實(shí)現(xiàn)這個(gè)功能,在字表中定義外鍵時(shí),增加related_name字段指定這個(gè)字表在主表中對(duì)應(yīng)的外鍵屬性,
如下:
class Fruit(models.Model): buyer = models.ForeignKey(Buyer, related_name='buyer_fruit') """ 主表:buyer 子表:fruit 子表在主表中對(duì)應(yīng)的外鍵屬性:related_name='buyer_fruit' """
那么我們就可以通過自定義外鍵的方式找到需要的信息了:
#首先獲得水果模型中外鍵指向的表中對(duì)象: buyer = Buyer.objects.filter(age = 100).first() #然后通過子表中自定義的外鍵獲取子表的所有信息: fruits = buyer.buyer_fruit.all()
以上這篇django中related_name的用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
django實(shí)現(xiàn)模型字段動(dòng)態(tài)choice的操作
這篇文章主要介紹了django實(shí)現(xiàn)模型字段動(dòng)態(tài)choice的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python語法學(xué)習(xí)之進(jìn)程間的通信方式
進(jìn)程在創(chuàng)建之后是沒有辦法獲取返回值的,但有的時(shí)候兩個(gè)進(jìn)程之間需要進(jìn)行相互之間的配合才能完成工作,這就需要通信的幫助。本文主要介紹了Python中進(jìn)程間的通信方式,需要的可以了解一下2022-04-04
Python實(shí)現(xiàn)多線程抓取網(wǎng)頁功能實(shí)例詳解
這篇文章主要介紹了Python實(shí)現(xiàn)多線程抓取網(wǎng)頁功能,結(jié)合具體實(shí)例形式詳細(xì)分析了Python多線程編程的相關(guān)操作技巧與注意事項(xiàng),并附帶demo實(shí)例給出了多線程抓取網(wǎng)頁的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-06-06
python判斷all函數(shù)輸出結(jié)果是否為true的方法
在本篇內(nèi)容里小編給各位整理的是一篇關(guān)于python判斷all函數(shù)輸出結(jié)果是否為true的方法,有需要的朋友們可以學(xué)習(xí)下。2020-12-12
Python爬蟲程序架構(gòu)和運(yùn)行流程原理解析
這篇文章主要介紹了Python爬蟲程序架構(gòu)和運(yùn)行流程原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Sphinx環(huán)境配置及VScode編寫Rst文檔轉(zhuǎn)html的步驟
sphinx主要用于編寫 reStructuredText 和 Markdown 格式技術(shù)文檔,編寫此類技術(shù)文檔時(shí)Sphinx工具可將其轉(zhuǎn)為html、pdf、ePub等格式,這篇文章主要介紹了Sphinx環(huán)境配置及VScode編寫Rst文檔轉(zhuǎn)html,需要的朋友可以參考下2023-03-03
Python實(shí)現(xiàn)的尋找前5個(gè)默尼森數(shù)算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的尋找前5個(gè)默尼森數(shù)算法,簡單講述了默尼森數(shù)的概念,并結(jié)合實(shí)例形式分析了Python求解默尼森數(shù)算法的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
利用Python探測(cè)附近WIFI密碼的詳細(xì)代碼
這篇文章主要介紹了利用Python探測(cè)附近WIFI密碼,基于python腳本實(shí)現(xiàn)wifi密碼的暴力破解從而實(shí)現(xiàn)免費(fèi)蹭網(wǎng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-01-01

