Бывают случаи что на этапе инициализации моделей нет возможности сформировать список для полей с выбором (choices).
В таком случае этот момент можно решить созданием в модели обычного текстового поля, а само поле выбора (select) реализовать в модельной форме с помощью виджета.
Набор полезных однострочных и почти однострочных конструкций python от youtube канала Digitalize.
Хоть все они давно известны, но почему-то далеко не все их используют ;)
1. Распаковка
x, y, z = input().strip().split()
2. map: Выполнение функции для каждого элемента последовательности
x, y, z = map(int, (x, y, z)
# Объединяем с предыдущим
x, y, z = map(int, input().strip().split())
а если моделей сотни, а если тысячи 0_о?
Понимание текущей схемы моделей проекта Django важно для успешной разработки.
Генерировать подобные схемы умеют продвинутые IDE типа PyCharm.
Но есть возможность генерации без IDE из консоли.
Для этого я использую django-extensions и pygrafviz и получаю что-то типа этого:
Для создания подобных схем нам необходимо:
После очередной установки сертификата SSL от Lets`Encript и проверки его на ssllabs.com получил не радующий результат:
А хотелось бы такой:
Порыл гугл и как всегда нарыл полу-работающий рецепт. Путем некоторых танцев с бубном и обработки напильником получил работающий на сегодняшний момент рецепт.
Изменяем файл /etc/letsencrypt/options-ssl-nginx.conf следующим образом...
В процессе работы над множеством проектов выработал для себя типовую структуру Django проекта, которая удовлетворяет всем моим требованиям и удобна как для разработки так и для поддержки.
Как всегда я использую свой стандартный стэк: Debian/Ubuntu + Python 3.* + PostgreSQL + NGINX + virtualenv + Django
Структура моих проектах основывается на рекомендациях Two Scoops of Django 1.11 с учетом моего стека и выглядит следующим образом:
Часто в проектах использую JSON поля PostgreSQL.
При этом в админке Django они отображаются так как лежат в базе. Выглядит это примерно так:
{ "1": "\u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435", "2": "\u0412\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435" }
Естественно это не по человечески и хотелось бы видеть в нормальном виде.
Для этого делаем следующее:
Иногда случаются ситуации когда данные в базе проекта уже есть и их надо связать с новой моделью, причем обязательной связью один ко многим.
Можно конечно временно обозначить связывающее поле ForeignKey как blank=True и заполнить после того как в новой модели появятся данные, а потом убрать blank=True.
Но это куча лишних действий и две миграции вместо одной.
Можно сделать тоже самое одной миграцией с добавлением в новую модель первой записи.
Для этого надо выполнить следующие шаги:
На VDS одного из проектов который я поддерживаю и который крутится на моем хостере по умолчанию (firstvds) недавно произошел сбой.
Сбои на VDS сами по себе явления необычные, а тут прям все "колом встало".
В результате разбора ситуации оказалось что сбойнула файловая система.
Файловую систему оживил но уперся в другую проблему. Postgres отказался запускаться и писал что-то типа: