Django админ кеш м2м отношение
У меня есть две модели:
models.py
class City(models.Model):
title = models.CharField(max_length=255)
show = models.BooleanField(default=True)
class Company(models.Model)
title = models.CharField(max_length=255)
cities = models.ManyToManyField(City, null=True, blank = True)
admin.py
class CompanyAdmin(admin.ModelAdmin):
search_fields = ('title',)
filter_horizontal = ('cities',)
Это около 23000 городов в базе данных.
Когда я редактирую детали компании в Admin, она загружается вечно!!! Простой доступ к admin/myapp/company/12/ занимает 2-3 минуты - это ужасно.
Как я могу ускорить вещи и кэшировать набор запросов модели города?
2 ответа
Вы можете использовать raw_id_fields
class CompanyAdmin(admin.ModelAdmin):
raw_id_fields = ("cities",)
23000 на самом деле "ничего" для базы данных.
Во-первых, вам нужно определить "виновника" замедления, какой запрос медленный. Это где django-debug-toolbar
очень поможет Затем вы можете запустить запросы вручную с EXPLAIN
и посмотрите, что можно улучшить - например, добавление индексов может помочь.
Также рассмотрите возможность использования django-cache-machine
или же johnny-cache
пакеты.
Также см: