Раньше моя форма поиска заполняла районы и категории, используя такие запросы к базе данных, как:
Код: Выделить всё
districts = (
AdPost.objects
.filter(admin_verified=True)
.values_list("district", flat=True)
.distinct()
)
Пример:
Код: Выделить всё
class AdPost(models.Model):
CATEGORY_CHOICES = [
('fish', 'fish'),
('cow', 'cow'),
]
DISTRICT_CHOICES = [
('e', 'e'),
('j', 'j'),
]
category = models.CharField(max_length=50, choices=CATEGORY_CHOICES)
district = models.CharField(max_length=30, choices=DISTRICT_CHOICES)
Код: Выделить всё
categories = AdPost.CATEGORY_CHOICES
districts = AdPost.DISTRICT_CHOICES
Код: Выделить всё
{% for key, label in districts %}
{{ label }}
{% endfor %}
Добавляет ли использование подобных вариантов моделей какую-либо заметную нагрузку на сервер при каждом запросе страницы, или эти варианты загружаются один раз и используются повторно?
Я хочу подтвердить, что этот подход безопасен и эффективен по сравнению с запросом к базе данных при каждом запросе.
Чего я ожидаю (но хочу подтверждения)
Насколько я понимаю, следующие варианты:
статические данные Python
Они загружаются один раз при запуске Django.
Отображение их в шаблонах не вызывает запросов к базе данных.
Это правильно?
Среда
Django 4.x
PostgreSQL / SQLite
Стандартные представления на основе классов
Подробнее здесь: https://stackoverflow.com/questions/798 ... every-page
Мобильная версия