工作一個django項目並嘗試加速調用。我注意到,Django自動執行第二個查詢來消除任何外鍵關係。舉例來說,如果我的模型看起來像:Django推遲外鍵查找
Model Person:
name = model.CharField("blah")
Model Address:
person = model.ForeignKey(Person)
然後我做:
p1 = Person("Bob")
address1 = Address(p1)
print (p1.id) #let it be 1 cause it is the first entry
然後當我打電話:
address1.objects.filter(person_id = "1")
我得到:
查詢#1:SELECT address
。 id
,address.person_id
FROM address
查詢#2:選擇person
。 id
,person.name
FROM person
我想擺脫第二個調用,查詢#2。我曾嘗試使用django文檔中的「延遲」,但這並不奏效(實際上它會調用更多)。 「價值觀」是一種可能性,但在實踐中,我想要拉動更多的領域。我希望它做的唯一事情不是評估FOREIGN KEY。我會很高興得到person_id,或不。這極大地減少了運行時間,尤其是當我執行像Address.objects.all()這樣的命令時,因爲Django會評估每個外鍵。
我發現我的__unicode__確實引用了self.house.id。這似乎清除了問題!謝謝。由於沒有足夠的聲譽,我不能滿足感,但是可以應付這種感覺的人! – user1639926 2013-03-19 00:12:54
謝謝。你仍然可以接受答案。 – 2013-03-19 07:04:57