Админ Django очень медленно загружается из пользовательской модели OneToOne
Я думаю, что я делаю модель администратора неправильно, потому что она занимает около 30 секунд для загрузки, и я думаю, что это потому, что мои sql-запросы слишком неэффективны и могут создавать больше просмотров, чем нужно. Есть ли способ ускорить это?
class UserInformationAdmin(admin.ModelAdmin):
list_display = (
'user_username',
'user_first_name',
'user_last_name',
'major'
)
@admin.display(description='user.username')
def user_username(self, obj):
try:
return obj.user.username
except Exception:
return None
@admin.display(description='user.first_name')
def user_first_name(self, obj):
try:
return obj.user.first_name
except Exception:
return None
@admin.display(description='user.last_name')
def user_last_name(self, obj):
return obj.user.last_name```
Из того, что я могу понять, имея
list_select_related = True
преобразуйте запросы в select_related
, которые намного быстрее. Вот конечный код, который, по сути, работал.
class UserInformationAdmin(admin.ModelAdmin):
list_select_related = True
list_display = (
'user_username',
'user_first_name',
'user_last_name',
'major'
)
@admin.display(description='user.username')
def user_username(self, obj):
try:
return obj.user.username
except Exception:
return None
@admin.display(description='user.first_name')
def user_first_name(self, obj):
try:
return obj.user.first_name
except Exception:
return None
@admin.display(description='user.last_name')
def user_last_name(self, obj):
return obj.user.last_name```