應該用select_related緩存entry_set嗎?即使在使用select_related之後,我的數據庫仍然正在接聽電話。相關部分django:select_related with entry_set
class Alias(models.Model):
achievements = models.ManyToManyField('Achievement', through='Achiever')
def points(self) :
points = 0
for a in self.achiever_set.all() :
points += a.achievement.points * a.count
return points
class Achievement(models.Model):
name = models.CharField(max_length=100)
points = models.IntegerField(default=1)
class Achiever(models.Model):
achievement = models.ForeignKey(Achievement)
alias = models.ForeignKey(Alias)
count = models.IntegerField(default=1)
aliases = Alias.objects.all().select_related()
for alias in aliases :
print "points : %s" % alias.points()
for a in alias.achiever_set.all()[:5] :
print "%s x %d" % (a.achievement.name, a.count)
而且我在開始時看到一個很大的連接查詢,然後在每個成就中看到一個大的連接查詢。既用於點和名稱查找。
這是一個錯誤,還是我做錯了什麼?
無賴。你會如何推薦我做這個查詢? SQL手動? – 2009-06-29 20:57:46