Wow thanks! That's really going fast now. I would have never come to that idea :)
One more question: Is this how you meant to set the instance variable or did you mean in another way? def __init__(self, *args, **kwargs): super(Player, self).__init__(*args, **kwargs) self.matches = Match.objects.select_related().filter( Q(opp1=self) | Q(opp2=self) ) On Friday, September 21, 2012 11:15:34 AM UTC+2, Martin J. Laubach wrote: > > My problem is when want to display overall player statistics I get about >> 1200 DB-Queries. >> This is because for each player there will be 5 Queries due to >> matches_won, matches_draw, goals, matches_played functions. >> > > First easy optimisation: keep Match.objects.select_related().filter( > Q(opp1=self)|Q(opp2=self)) in an instance variable and use that QuerySet > as base of all your calculations. Do NOT add additional filters for > matches_draw/matches_won/matches_played, instead iterate over the results > and do the calculations in Python. That way the QuerySet result will be > cached the first time you're iterating over it and won't result in any more > database accesses later on. > > Cheers, > > mjl > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/crAR4nXZyugJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.