Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
http://www.rusdoc.ru. Версия для печати.

Django: queryset-refactor

Раздел: Programming / Python @ 27.04.2008 | Ключевые слова: python django

Автор: Honeyman
Источник: habrahabr

Долгожданная ветка 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 генерируется при сложных запросах...


Вернуться в раздел: Programming / Python
© Copyright 1998-2012 Александр Томов. All rights reserved.