Django ForeignKey 反向查詢

2021-08-31 23:19:16 字數 1352 閱讀 8237

大家使用 django 建立模型的時候一定會經常使用 foreignkey 來建立兩個**之間多對一的外來鍵關係,例如b中有乙個 models.foreignkey(a) 。而當我們需要反向查詢 a 中某個具體例項所關聯的 b 時,可能會用到 a.b_set.all() 或 b.objects.filter(a) 這兩種不同的方法。

不知道大家有沒有也想過乙個問題:當**實際上線後,seo強調頁面載入速度,而當面對不斷增大的請求量,這兩種方法的哪一種速度更快?

@property在model中的妙用

from django.db import models

class person(models.model):

name = models.charfield(max_length=64)

age = models.integerfield()

tel = models.charfield(max_length=64)

@property

def all_cars(self):

return cars.all()

@property

def info(self):

# return the name and tel of person

return '%s %s' % (self.name, self.tel)

class car(models.model):

owner = models.foreignkey(person, related_name='cars')

name = models.charfield(max_length=64)

price = models.floatfield()

car = car.objects.get(id=1) # 查詢該車的車主 owner = car.owner

主表查詢子表,即反向查詢:

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

# 查詢此人有多少車

# 方式一:

# django預設每個主表物件都有乙個外來鍵的屬性

# 可以通過它來查詢所有屬於主表的子表資訊

# 查詢方式:主表.子表_set()

# 返回值為乙個queryset物件

tom.car_set().all()

# 方式二:

# 通過在外鍵中設定related_name屬性值既可

tom.cars.all()

# 方式三:

# 通過@property裝飾器在model中預定義方法實現

tom.all_cars

django Foreign Key外來鍵引數

foreignkey foreignobject blog models.foreignkey to blog to field nid on delete models.do nothing 外來鍵關聯部落格,乙個部落格站點可以有多個分類字段 to,要進行關聯的表名 to field none,要...

反向並查集 國王的煩惱

問題描述 c國由n個小島組成,為了方便小島之間聯絡,c國在小島間建立了m座大橋,每座大橋連線兩座小島。兩個小島間可能存在多座橋連線。然而,由於海水沖刷,有一些大橋面臨著不能使用的危險。如果兩個小島間的所有大橋都不能使用,則這兩座小島就不能直接到達了。然而,只要這兩座小島的居民能通過其他的橋或者其他的...

正規表示式之正向預查和反向預查

正向預查 1.正向正預查 例如 foo bar 匹配後面帶有bar的foo 它可以匹配 foobar,abcfoobar 中的foo 但是不能匹配 fooabc 中的foo 2.正向負預查 例如 foo bar 匹配後面不帶bar的foo 它可以匹配 foo123 但是不能匹配 foobar 負向預...