Увеличивает ли использование выбора модели Django для поисковых фильтров нагрузку на сервер при каждом запросе страницы?Python

Программы на Python
Ответить
Anonymous
 Увеличивает ли использование выбора модели Django для поисковых фильтров нагрузку на сервер при каждом запросе страницы?

Сообщение Anonymous »

Я создаю веб-сайт объявлений на базе Django.
Раньше моя форма поиска заполняла районы и категории, используя такие запросы к базе данных, как:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»