Web технологии

12. API моделей Django

Дмитрий Смаль

Django Models API

Создание и изменение объектов

Создание объектов со связями

Загрузка объекта из базы

Выборка нескольких объектов

QuerySets

QuerySet

QuerySet - объекты, представляющие собой запрос к базе данных. Именно запрос, а не его результаты. QuerySet являются ленивыми (lazy) объектами. Это значит, что запрос осуществляется не в момент создания QuerySet, а в момент итерации по нему, либо вызова метода, возвращающего результат.

Chaining

Методы QuerySet (chaining)

Методы QuerySet (результат)

Синтаксис условий в QuerySet

В методах filter и exclude:

Названия полей и таблиц не могут содержать __!

ModelManager

ModelManager

В модели содержатся методы для работы с одним объектом (одной строкой). В ModelManager содержатся объекты для работы со множеством объектов. ModelManager «по-умолчанию» содержит все те же методы что QuerySet и используется для создания QuerySet объектов связанных с данной моделью.

ModelManager «по-умолчанию»

Свой ModelManager

RelatedManager

RelatedManager связан с конкретным объектом Post и во все выборки будет добавлять условие post=p1

Методы RelatedManager

Миграции

Миграции

Миграция - это процедура изменения схемы базы данных для приведения ее в соответствие с моделями.

Начиная с версии 1.7 Django поддерживает миграции на уровне фреймворка.

Django миграции

Свои миграции

project/migration/2015-08-08-more-post-fields.py

Best practices

Fat controller

Типичная проблема начинающих разработчиков - размещение логики в контроллерах. Это плохое решение, у которого есть имя - антипаттерн Fat Controller.
Размещение логики в контроллере лишает вас возможности использовать ее повторно. Всю бизнес-логику приложения следует размещать в моделях.