Как стать автором
Обновить

queryset-refactor

Время на прочтение1 мин
Количество просмотров695
Долгожданная ветка queryset-refactor наконец-то слита с основной рабочей веткой trunk (изменение r7477). Официальная документация для trunk-а на сайте тоже обновлена.
Что это значит для всех нас?
  • Самое главное — это, конечно, model inheritance. Модели могут наследоваться друг от друга, и при этом соответствующие им таблицы в базе данных будут ссылаться друг на друга соответственно.
  • Базовые классы при этом могут быть абстрактными (и в таком случае для них не будет создаваться отдельной таблицы, а определённые в них поля будут созданы в таблице модели-потомка), а могут и не быть (и тогда таблица модели-потомка будет ссылаться на базовую таблицу).
  • Наследование, кстати, может быть и множественным.
  • Поля OneToOneField больше не создают автоматически первичный ключ. Будьте осторожны, это изменение с потерей обратной совместимости.
  • Теперь объекты Q могут использоваться с операторами &, | и ~, и результатом тоже будет Q-объект.
  • .filter(field=None) (или .filter(field__exact=None)) теперь эквивалентно .filter(field__isnull=True).
  • Теперь у QuerySet-а есть метод update(), позволяющий изменить что-нибудь сразу для всех полей, соответствующих QuerySet-у.

… ну, и ещё много всего прочего интересного, но отдельно стоит упомянуть недодокументированную приятную фенечку — .query и .query.as_sql() для любых QuerySet-ов — теперь становится понятно, какой SQL генерируется при сложных запросах...
Теги:
Хабы:
Всего голосов 25: ↑23 и ↓2+21
Комментарии6

Публикации

Истории

Работа

Python разработчик
125 вакансий

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург