Миграции для текстовых полей

Часто, при добавлении новых полей в модель/БД, и выполнении ./manage.py makemigrations, django хочет знать, чем заполнить поля в строках таблицы которые уже есть или могут быть. Null он туда подставить не может, т.к. поле текстовое, поэтому выбираем 1 и указываем ""

You are trying to add a non-nullable field 'tree_id' to vrf without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py
Select an option: 1
Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now()
>>> ""

MPTT

Поговорим о способе реализации иерархического хранения данных со структурой каталогов. Отличный пример — интернет магазин, где определенный товар находится в определенной ветке дерева категорий. Или иерархия адресов: Когда для определенных городов, есть общий родитель — государство и т.д.

В данном случае, необходимо пройти по дереву с применением рекурсии. Однако в Django уже есть готовое решение  django-mptt.

MPTT(Modified Preorder Tree Traversal) / Nested Sets  — один из способов обхода деревьев категорий. В двух словах — метод обхода иерархических деревьев, когда в БД есть структура:  id, parent_id, name. А нам необходим способ рекурсивно пройти по нему извлечь ветки для потомком особо не нагружая базу данных

(далее…)

Моя реализация AJAX для поиска в inventory

Реализация AJAX для поиска в инвентори. Общая схема

  1. После ввода поискового запроса, нажатия bottom, нажатия на enter срабатывает соответствующий обработчик js: click(), submit(), keypress().
  2. Используя AJAX, GET запрос, передается на сервер, в обработчик django url
  3. url отправляет его во view: search()
  4. Выполняет запрос в БД, формирует Query Set, возвращает словарь в шаблон
  5. В шаблоне разбираем словарь на составляющие, для отрисовки страницы

 

(далее…)