我一整天都在Django上流口水,而在創紀錄的時間內編寫一個內部網站,但現在我注意到模型中的ForeignKeys效率非常低。很多來自django foreignkey fields的查詢
我有一個有6個ForeignKeys的模型,它們基本上是查找表。當我查詢所有對象並將它們顯示在模板中時,它每個項目運行約10個查詢。這裏有一些代碼,應該更好地解釋它:
class Website(models.Model):
domain_name = models.CharField(max_length=100)
registrant = models.ForeignKey('Registrant')
account = models.ForeignKey('Account')
registrar = models.ForeignKey('Registrar')
server = models.ForeignKey('Server', related_name='server')
host = models.ForeignKey('Host')
target_server = models.ForeignKey('Server', related_name='target')
class Registrant(models.Model):
name = models.CharField(max_length=100)
...和5個更簡單的表。有155個網站記錄,並且在我使用的視圖中:
Website.objects.all()
它最終執行1544個查詢。在模板中,我使用所有的外交領域,如:
<span class="value">Registrant:</span> <a href="/filter/registrant/{{ website.registrant.id }}">{{ website.registrant.name }}</a><br />
所以我知道它會運行很多查詢的...但它看起來這是過度的。這是正常的嗎?我不應該這樣做嗎?
我對Django很新,所以希望我只是在做一些愚蠢的事情。這絕對是一個非常驚人的框架。
謝謝!這個功能絕對有意義。現在它運行了9個查詢。由於表格很小,我不在乎它是加載所有的數據(顯然它更好)。 – 2009-07-10 20:34:26