Luc*_*s03 7 django django-admin
我有一个 Django 网站,带有 model Event,可以说:
class Event(models.Model):
home = models.ForeignKey('Team', related_name='%(class)s_home')
away = models.ForeignKey('Team', related_name='%(class)s_away')
...
class Team(models.Model):
name = models.CharField("team's name", max_length=100)
Run Code Online (Sandbox Code Playgroud)
为此使用外键是一个坏主意,但无论如何,如何使其在 Django 管理页面中可用?
在管理编辑事件页面中,为此获取了大量外键:
http://127.0.0.1:8000/admin/event/event/116255/
它产生大量的选择,例如:
SELECT "event_team"."id", "event_team"."name" FROM "event_team" WHERE "event_team"."id" = 346;
页面就死了。我正在玩这些:
class EventAdmin(admin.ModelAdmin):
list_display = ('id', 'home', 'away', 'date_game', 'sport', 'result')
search_fields = ['home__name', 'away__name']
list_select_related = (
'home', 'away', 'league', 'sport', ...
)
def get_queryset(self, request):
return super(EventAdmin, self).get_queryset(request).select_related(*self.list_select_related)
admin.site.register(Event, EventAdmin)
Run Code Online (Sandbox Code Playgroud)
但没有运气。
我发现了问题,这是我的错误,我什至没有在问题中提到它:(
这是我的模型,但我没有提到重要的部分:
class Event(models.Model):
home = models.ForeignKey('Team', related_name='%(class)s_home')
away = models.ForeignKey('Team', related_name='%(class)s_away')
merged = models.ForeignKey('Event', null='True', blank='True')
def __unicode__(self):
return str(self.id) + ": " + self.home.name + " - " + self.away.name
Run Code Online (Sandbox Code Playgroud)
问题不在于homeor away,而在于为每个事件获取和 的merged字段。self.home.nameself.away.name
替换为
def __unicode__(self):
return 'Event id: {}'.format(self.id)
Run Code Online (Sandbox Code Playgroud)
并添加merged以list_select_related
解决我的问题。感谢您的帮助,并对不完整的问题表示歉意。
| 归档时间: |
|
| 查看次数: |
7283 次 |
| 最近记录: |