Page - сущность (ORM Entity) модуля pages приложения Refarm-site.
Page реализует следующую функциональность работы со страницами интернет-магазина:
- организацию иерархии страниц;
- применение нумерации (пагинации);
- работу с SEO: тегами и шаблонами.
Инструкция по работе с seo-шаблонами.
@todo #131:120m Move seo-templates doc to md file in cvs.
Класс Page хранит в себе каждую страницу сайта и поддерживает иерархичность. Например: страницы каждой новости вложены в раздел Новости, страницы каждой категории товаров вложены в раздел Категории товаров, страницы каждого товара вложены в какую-либо из категорий товаров.
Для поддержки иерархичности в Page используется библиотека django-mptt. MPTT - метод хранения древовидных (иерархических) данных в БД (PostgreSQL)
Page реализована в модуле pages. В других модулях Page используется только через наследование - для того, чтобы держать все связи таблиц (ForeignKey) в рамках одного модуля. Иначе - проблемы с Django ORM. Например: модуль catalog использует сущности CategoryPage и ProductPage. Они наследованы от Page и добавляют свою функциональность. Все связи таблиц (ForeignKey) объявлены именно на стороне CategoryPage и ProductPage.