【发布时间】:2010-11-06 14:39:54
【问题描述】:
entry_set 是否应该与 select_related 一起缓存?即使在我使用 select_related 之后,我的数据库仍然会接到电话。相关部分
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)
我在开始时看到一个大的连接查询,然后每个成就都单独调用。用于点数和名称查找。
这是一个错误,还是我做错了什么?
【问题讨论】:
标签: django django-models django-select-related