ORM通常用于管理數(shù)據(jù)庫(kù)中的對(duì)象,包括創(chuàng)建、讀取、更新和刪除操作。它提供了一種將Python對(duì)象映射到關(guān)系數(shù)據(jù)庫(kù)的方法,在使用Python的Django框架進(jìn)行web開(kāi)發(fā)的時(shí)候,會(huì)有很多數(shù)據(jù)庫(kù)方面的寫(xiě)入,查詢(xún)等操作,在操作數(shù)據(jù)庫(kù)的時(shí)候,我們可以通過(guò)編輯SQL語(yǔ)句進(jìn)行查詢(xún)數(shù)據(jù)庫(kù),也可以使用Django ORM(Object-Relational Mapping,對(duì)象關(guān)系映射)來(lái)進(jìn)行數(shù)據(jù)庫(kù)操作,Django ORM 是一個(gè)使用 Python 語(yǔ)言編寫(xiě)的庫(kù),可以使得開(kāi)發(fā)者通過(guò)面向?qū)ο蟮姆绞讲僮麝P(guān)系型數(shù)據(jù)庫(kù)。
那么如何直通過(guò)外鍵進(jìn)行附表的查詢(xún),我們直接看代碼,這里是兩個(gè)表的model格式
我們把常用的數(shù)據(jù),放在WangxinLssuance表中,把數(shù)據(jù)內(nèi)容比較多的內(nèi)容字段,放在附表中,這樣在查詢(xún)的時(shí)候可以提高查詢(xún)的效率,我們直接查詢(xún)主表的話(huà),可以看到,其中的center_uid、receive_uid都是關(guān)聯(lián)的Users表、用于獲取用戶(hù)的信息,WangxinLssuanceData表中的lssuance用于關(guān)聯(lián)主表WangxinLssuance中的信息,可以是一對(duì)一,也可以是一對(duì)多
那么如何查詢(xún)附表中的數(shù)據(jù),實(shí)現(xiàn)一對(duì)多查詢(xún)呢
我們直接在查詢(xún)后面增加_set,就可以來(lái)進(jìn)行附表的篩選查詢(xún)等操作了
核心代碼:
lssuance = WangxinLssuance.objects.get(id=params['id'])先獲取主表信息
然后通過(guò)小寫(xiě)的表名加上_set方式來(lái)操作附表
lssuance.wangxinlssuancedata_set.get().content
這樣的篩選用于篩選附表?xiàng)l件,可以用filter方法進(jìn)行條件篩選