【发布时间】:2011-07-08 01:31:36
【问题描述】:
Django 1.2.5 Python:2.5.5
我的运动模型管理员列表变得非常缓慢(400 条记录需要 5 分钟)。它会在一秒钟左右返回,直到我们获得 400 场比赛、50 支球队和 2 项运动。
我以一种糟糕的方式修复了它,所以我想看看是否有人以前见过这个。我的应用如下所示:
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',)
如果我从 list_display 中删除任何外键,那么它很快。只要我添加任何外键就会变慢。
我通过使用非外键但在模型初始化中计算它们来修复它,所以这有效:
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',)
目前所有其他模型的管理都很好,有几千条记录,实际站点中的所有视图都运行良好。
【问题讨论】:
标签: python performance django-admin foreign-keys