大家使用 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 負向預...