Django app to tree in DB.
Project description
На данный момент приложение тестировалось в Django 1.8, и БД PostgreSQL 9.1 и выше.
Установку можно произвести двумя способами.
## 1. Установка из git репозитария
Колнирование текущего репозитария создаст папку проекта `django_treensl`.
В нем имеется уже настроенное приложение для примера `myapp`.
В этом приложении присутствует пример описания иерархической модели `Group`, а так же готовый файл миграции, который, после выполнения команды `migrate`, подключит модель к триггерным функциям в БД PostgreSQL. БД, конечно же, надо предварительно создать и прописать корректные параметры подключения к ней в файле настроек проекта.
## 2. Стандартная установка
### 2.1. Установка пакета
`pip install django-treensl`
### 2.2. Подключение приложения
Подключить приложение `treensl` в `settings.py`:
INSTALLED_APPS = (
...,
'treensl',
)
Подробнее - смотри wiki к этому репозитарию
-------------
Приложение для создание структуры "дерево" в моделях Django типа — Вложенные
множества с ограничением по количеству уровней и возможному количеству детей
у родителя.
Ключ «id» - целочисленный. Либо int32 либо int64.
От размера целого зависят количества допустимых уровней и детей.
Связанный список с полями «id» и «parent», где «parent» ссылка на «id» родителя.
Значение нового «id» вычисляется на основании размерности дерева, «id» родителя,
и количества уже имеющихся у родителя детей.
Реализованное дерево сочетает достоинства деревьев типа «Связанный список»,
«Вложенные множества», «Материализованный путь».
Ключ — целое число (не строка).
Зная «id» элемента и размерность дерева (а мы всегда это знаем) можно осуществить:
- Вычисление диапазона детей, без запроса к БД
- Вычисление списка родителей, без запроса к БД
- Почти всегда, для получения данных, можно обойтись одним запрос к таблице
Недостаток — ограниченность размерности дерева разрядностью ключа.
После выбора размерности дерева, и начала работы с ним (то есть с заполнением таблицы),
будет уже нельзя изменить размерность.
Описание алгоритма в моей статье:
http://habrahabr.ru/post/166699/
Состав репозитария:
django_treensl — проект Django.
treensl — приложение, реализующее описание абстрактных таблиц-деревьев и
осуществляющее настройку БД (создание триггерных функций, вспомогательных функций,
таблицы хранящей размерности таблиц-деревьев).
myapp — приложение для примера. В нем создается модель-дерево, наследница от одной
из абстрактных таблиц приложения treensl, записывается во вспомогательную таблицу
размерность дерева, вставляется в дерево начальный элемент (первая запись, родитель
для всех остальных), и производится подключение таблицы к триггерным функциям в БД.
docs — на данный момент в этой папке один файл, текст программы для помощи в выборе
размерности дерева и «id» начального элемента. Программа на python2.
calc_values.py — в нем функции для вычисления диапазона детей, и списка родителей
без обращения к БД. Эти функции могут быть использованы в приложении myapp.
Приложение создавалось в Django 1.8
БД пока только PostgreSQL 9.1 +
Для установки скопируйте репозитарий к себе на диск, создайте БД, поменяйте настройки
в settings.py на свои, выполните manage.py migrate... можно запускать и смотреть работу
тестовой таблицы Group
Установку можно произвести двумя способами.
## 1. Установка из git репозитария
Колнирование текущего репозитария создаст папку проекта `django_treensl`.
В нем имеется уже настроенное приложение для примера `myapp`.
В этом приложении присутствует пример описания иерархической модели `Group`, а так же готовый файл миграции, который, после выполнения команды `migrate`, подключит модель к триггерным функциям в БД PostgreSQL. БД, конечно же, надо предварительно создать и прописать корректные параметры подключения к ней в файле настроек проекта.
## 2. Стандартная установка
### 2.1. Установка пакета
`pip install django-treensl`
### 2.2. Подключение приложения
Подключить приложение `treensl` в `settings.py`:
INSTALLED_APPS = (
...,
'treensl',
)
Подробнее - смотри wiki к этому репозитарию
-------------
Приложение для создание структуры "дерево" в моделях Django типа — Вложенные
множества с ограничением по количеству уровней и возможному количеству детей
у родителя.
Ключ «id» - целочисленный. Либо int32 либо int64.
От размера целого зависят количества допустимых уровней и детей.
Связанный список с полями «id» и «parent», где «parent» ссылка на «id» родителя.
Значение нового «id» вычисляется на основании размерности дерева, «id» родителя,
и количества уже имеющихся у родителя детей.
Реализованное дерево сочетает достоинства деревьев типа «Связанный список»,
«Вложенные множества», «Материализованный путь».
Ключ — целое число (не строка).
Зная «id» элемента и размерность дерева (а мы всегда это знаем) можно осуществить:
- Вычисление диапазона детей, без запроса к БД
- Вычисление списка родителей, без запроса к БД
- Почти всегда, для получения данных, можно обойтись одним запрос к таблице
Недостаток — ограниченность размерности дерева разрядностью ключа.
После выбора размерности дерева, и начала работы с ним (то есть с заполнением таблицы),
будет уже нельзя изменить размерность.
Описание алгоритма в моей статье:
http://habrahabr.ru/post/166699/
Состав репозитария:
django_treensl — проект Django.
treensl — приложение, реализующее описание абстрактных таблиц-деревьев и
осуществляющее настройку БД (создание триггерных функций, вспомогательных функций,
таблицы хранящей размерности таблиц-деревьев).
myapp — приложение для примера. В нем создается модель-дерево, наследница от одной
из абстрактных таблиц приложения treensl, записывается во вспомогательную таблицу
размерность дерева, вставляется в дерево начальный элемент (первая запись, родитель
для всех остальных), и производится подключение таблицы к триггерным функциям в БД.
docs — на данный момент в этой папке один файл, текст программы для помощи в выборе
размерности дерева и «id» начального элемента. Программа на python2.
calc_values.py — в нем функции для вычисления диапазона детей, и списка родителей
без обращения к БД. Эти функции могут быть использованы в приложении myapp.
Приложение создавалось в Django 1.8
БД пока только PostgreSQL 9.1 +
Для установки скопируйте репозитарий к себе на диск, создайте БД, поменяйте настройки
в settings.py на свои, выполните manage.py migrate... можно запускать и смотреть работу
тестовой таблицы Group
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-treensl-0.1.4.tar.gz
(13.2 kB
view hashes)