Django, высокоуровневая веб-платформа Python, которая позволяет создавать динамические веб-сайты, добавила новые классы, чтобы упростить создание индексов баз данных.
Django 1.11 был обозначен как долгосрочный релиз поддержки, что означает, что он будет получать обновления безопасности в течение как минимум трех лет после его выпуска.
Улучшения для индексов баз данных происходят из нового модуля django.db.models.indexes, в котором есть классы для создания индексов. Вы можете создавать составные и пользовательские индексы для баз данных, чтобы оптимизировать запросы к базам данных и ускорить время отклика от баз данных. Класс Index создает индекс b-дерева, как если бы вы использовали db_index в поле модели или index_together в мета-классе модели.
Еще одним дополнением является поддержка визуализации виджетов на основе шаблонов, чтобы упростить настройку виджетов форм. Процесс отрисовки формы можно настроить на нескольких уровнях:
Виджеты могут указывать имена пользовательских шаблонов.
Формы и виджеты могут указывать пользовательские классы визуализации.
Шаблон виджета может быть переопределен проектом. (Многоразовые приложения, как правило, не должны переопределять встроенные шаблоны, поскольку они могут конфликтовать с пользовательскими шаблонами проекта.)
Другие улучшения направлены на работу с данными. Теперь вы можете использовать выражения подзапросов для создания явных подзапросов с помощью ORM, избегая необходимости перехода на необработанный SQL. Вы также можете добавить явный подзапрос в набор запросов, используя выражение подзапроса.
Если вы хотите ссылаться на столбцы из внешнего запроса в наборе запросов, теперь есть опция OuterRef, которая позволяет ссылаться на определенное поле.
Существует также новый квалификатор Exists. Это подкласс подзапроса, который использует инструкцию SQL EXISTS для определения наличия соответствующей строки в подзапросе. Во многих случаях это должно работать лучше, чем подзапрос, так как база данных может остановить оценку подзапроса при обнаружении первой совпадающей строки.