Django 1.2.5 Python: 2.5.5
My list of administrators of a sports model just went very slowly (5 minutes for 400 entries). He came back in a second or so, until we got 400 games, 50 strange teams and 2 sports.
I fixed it horribly, so I would like to see if anyone has seen this before. My application is as follows:
models: Sport( models.Model ) name Venue( models.Model ) name Team( models.Model ) name Fixture( models.Model ) date sport = models.ForeignKey(Sport) venue = models.ForeignKey(Venue) TeamFixture( Fixture ) team1 = models.ForeignKey(Team, related_name="Team 1") team2 = models.ForeignKey(Team, related_name="Team 2") admin: TeamFixture_ModelAdmin (ModelAdmin) list_display = ('date','sport','venue','team1','team2',)
If I remove the foreign keys from list_display then it is fast. As soon as I add any foreign key, then slowly.
I fixed it using not foreign keys, but computing them in init, so this works:
models: TeamFixture( Fixture ) team1 = models.ForeignKey(Team, related_name="Team 1") team2 = models.ForeignKey(Team, related_name="Team 2") sport_name = "" venue_name = "" team1_name = "" team2_name = "" def __init__(self, *args, **kwargs): super(TeamFixture, self).__init__(*args, **kwargs) self.sport_name = self.sport.name self.venue_name = self.venue.name self.team1_name = self.team1.name self.team2_name = self.team2.name admin: TeamFixture_ModelAdmin (ModelAdmin) list_display = ('date','sport_name','venue_name','team1_name','team2_name',)
Administration for all other models is in order with several thousand entries at the moment, and all views on the site are functioning normally.