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