У меня есть приложение Location в моем проекте. Есть список стран, их штатов и городов.
model.py
class Country(models.Model):
class Meta:
verbose_name = 'Country'
verbose_name_plural = 'Countries'
unique_together = ['name', 'iso2'],
name = models.CharField(
max_length=255,
verbose_name=_('Country name'),
)
iso2 = models.CharField(
max_length=2,
null=True,
blank=True,
verbose_name=_('iso2'),
)
phone_code = models.CharField(
max_length=15,
null=True,
blank=True,
verbose_name=_('Phone code'),
)
def __str__(self):
return self.name
class State(models.Model):
name = models.CharField(
max_length=100,
verbose_name=_('State'),
)
country = models.ForeignKey(
Country,
on_delete=models.SET_NULL,
verbose_name=_('Country'),
related_name='states',
related_query_name='states',
null=True,
)
state_code = models.CharField(
max_length=20,
null=True,
blank=True,
verbose_name=_('State code'),
)
def __str__(self):
return self.name
class City(models.Model):
name = models.CharField(
max_length=70,
verbose_name=_('City name'),
)
state = models.ForeignKey(
State,
on_delete=models.SET_NULL,
null=True,
verbose_name=_('State'),
related_name='cities',
related_query_name='cities',
)
country = models.ForeignKey(
Country,
on_delete=models.SET_NULL,
verbose_name=_('Country'),
related_name='cities',
related_query_name='cities',
null=True,
)
def __str__(self):
return self.name
Я пытаюсь получить список городов стран в Django admin через Tabular inline, но когда Я нажимаю на любую страну, она загружается очень медленно (около 1 минуты). Как это оптимизировать? Когда я сделал это в Shell - Country.objects.get(name='USA').cities.all()
он возвращает результаты менее 10 мс
admin.py
from .models import Country, City
class CountryCitiesAdmin(admin.TabularInline):
model = City
class CountryAdmin(admin.ModelAdmin):
inlines = (CountryCitiesAdmin,)
list_display = ('name', 'iso2', 'phone_code')
search_fields = ('name', 'code', 'phone_code',)
admin.site.register(Country, CountryAdmin)