Django的1.2.5 的Python:2.5.5Django管理list_display与外键古怪慢
我的运动模式的管理员列表刚刚消失很慢(5分钟400条记录)。它在一秒钟之内回归,直到我们有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',)
管理所有其他型号的罚款几千上万条记录的时刻,并在实际的所有观点:
我通过在模型初始化使用非外键,但计算它们所以此工程在固定它网站运行良好。
此外,您可以在unicode函数中注意调用外键unicode函数。这些导致进一步的子查询。 – 2012-03-19 16:38:12