Needing to get this done, I went with SQL. The sql seems rather inefficient. But, my data set will be rather small. I posted what I went with on Pastebin: http://pastebin.com/VmiYNXan (good for 24 hrs).
I don't have much data loaded (just one tournament). But, you can see the resulting table of data here: rankintornadoes.com. I would still like to know if this would be the recommended Django way. Any advice would be welcome. Darren On Thu, May 27, 2010 at 2:19 PM, darren <backdoc...@gmail.com> wrote: > I'm looking for ideas on the best way to approach this problem. > Should I write raw SQL, stay with the ORM or even mix Javascript with > either ORM or SQL? > > I want to keep up with player stats for a baseball team. I've been > reading up on aggregates and annotations. And, I'm getting somewhere > with it. But, not quite all the way yet. I also wrote some SQL that > accomplishes most everything I need all at once. I think I could run > with it, too. > > To calculate things like "on base percentage" or "batting average", I > need to mix math both vertically and horizontally in the table. One > way I thought about handling this is to build an HTML table of data > using a queryset based on this example in the Django documentation: > > Book.objects.aggregate(Avg('price'), Max('price'), Min('price')) > > except, I would need something that summed 3 or 4 different columns. > > At that point, I could use javascript to Sum() the total of each and > calculate averages. So, a table would be built like: > > A B C D E > F > G H > Player Name | Hits | Strike Outs | Walks | Fouled Out | > Javascript Calcuated Total at Bats | Javascript Calc. Batting AVG | > Javasctipt On Base % > Player 1 3 2 5 2 > A+B+C+D+E > B/F (B+D)/F > Player 2 4 2 5 1 > A+B+C+D+E > B/F (B+D)/F > > > My models contain 3 tables that join people, tournaments and an "at > bat". The "AtBat" class is where the statistical data will be > recorded. The model looks like this. So, I'm saving one result per > record: > > 101 class AtBat(models.Model): > 102 atbat_id = models.AutoField(primary_key=True) > 103 player = models.ForeignKey(Person, to_field='f_name', > verbose_name='Player', limit_choices_to={'relationship' : 'Player' }) > 104 game = models.ForeignKey(Score, to_field='scores_id', > verbose_name='Game') > 105 result = models.CharField('Result', choices=(('H', 'Hit'), > ('BB', 'Walk'), ('K', 'Strike Out'), ('FO', 'Ground or Fly Out'), > ('Sacrifice', 'Sacrafice')), max_length=10) > > One of my goals would be to allow users to select certain players, > date ranges or games to filter the results. I'm not sure how that > might impact the solution. > > Any suggestions? > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@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.