Django 外來鍵查詢和反查詢

2022-04-01 15:11:15 字數 1932 閱讀 3896

一、foreignkey

@property裝飾器的作用是返回乙個屬性特性,在資料庫中也有一些小技巧可以拿來用,比如今天要寫的外來鍵查詢和反向查詢的內容。

1

from django.db import

models23

class

person(models.model):

4 name = models.charfield(max_length=20, verbose_name='姓名'

)5 age = models.integerfield(default=0, verbose_name='年齡'

)6 tel = models.charfield(max_length=11, verbose_name='**'

)78class

meta:

9 verbose_name = '人'

10 verbose_name_plural =verbose_name

1112

@property

13def

all_cars(self):

14return

self.all()

1516

@property

17def

info(self):18#

return the name and tel of person

19return

'%s %s

' %(self.name, self.tel)

2021

class

car(models.model):

22 owner = models.foreignkey(person, on_delete=models.cascade, related_name='

cars

', verbose_name='車主'

)23 brand = models.charfield(max_length=64, verbose_name='品牌'

)24 price = models.floatfield(default=0, verbose_name='**'

)2526class

meta:

27 verbose_name = '汽車'

28 verbose_name_plural = verbose_name

在上面我們建立了兩個表,person為主表,car為子表,car中有外來鍵(foreignkey)鍵至person。

1 car = car.objects.get(id=1)2#

查詢該車的車主

3 owner = car.owner

1 bruce = person.objects.get(id=1)

2"""

查詢此人有多少車

"""3

#方式一:django預設每個主表都有乙個外來鍵屬性4#

通過該方式來查詢屬性,方式:主表.從表_set

5bruce.car_set.all()6#

方式二:通過在外鍵中設定related_name屬性值訪問,本例設定related_name='cars'

7bruce.self.all()8#

方式三:通過@property裝飾器在主表model預定義方法實現:

9 bruce.all_cars

查詢一些自己需要的組合資料的時候,比如獲取person的一些個人資訊,在@property的預定義info方法下,bruce.info即可實現。

1

#利用@property裝飾器在person中預定義info方法實現獲取個人資訊

2 bruce_info = bruce.info

mysql外來鍵查詢

當我們想檢視乙個資料庫表有多少其他表通過外來鍵依賴這個表的時候,可以通過視覺化的工具來看,當沒有工具可以使用的時候,可以通過如下的sql查詢來完成 select concat table name,column name as foreign key concat referenced table ...

mysql外來鍵字段怎麼查詢 查詢外來鍵字段資訊

查詢外來鍵字段資訊 set pagesize 1000 col 外來鍵擁有者 for a20 col 外來鍵表 for a30 col 外來鍵列 for a20 col 主鍵擁有者 for a20 col 主鍵表 for a30 col 主鍵列 for a20 col 外鍵名 for a30 col...

查詢表主鍵 外來鍵

專案中用到的一些sql oracle下的 總結 1 查詢表的所有索引 包括索引名,型別,構成列 select t.i.index type from user ind columns t,user indexes i where t.index name i.index name and t.tab...