Should entry_set be cached with select_related? My DB is still ringing even after I use select_related. Relevant Sections
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 "%sx %d" % (a.achievement.name, a.count)
And I see a big connection request at the beginning, and then individual calls for each achievement. Both for points, and for search of a name.
Is this a mistake, or am I doing something wrong?
source share