Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 5, 2017 16:13:07

xzvf
Зарегистрирован: 2016-09-04
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

несколько вопросов по initial migrations

Всем привет.

Есть установленная django 1.11.4, в официальном туториале приведен пример изначальной миграции как: python manage.py migrate. Все бы ничего, но такой способ создает помимо необходимых записей в базу таблиц дефолтных приложений (admin, auth, contenttypes…) миграции в /site-packages/django/ соответствующих приложений. И мне не совсем понятно, зачем. Вряд ли я (и 99% других пользователей) будут мигрировать модели искаробочных приложений. Соответственно, такое поведение, на мой взгляд, избыточно.

В документации я нашел, что можно сделать: manage.py migrate –run-syncdb. Пример юзкейса там приведен несколько другой (экономия времени на проектах с большим количеством моделей), но вроде бы он делает то, что необходимо.

Еще есть два интересных флага: –fake и –fake-migrations. Первый, как я понял, для того, чтобы отметить миграцию как выполненную, но на самом деле запись в бд не производить. И второй, чтобы интегрировать миграции в проект, который ранее существовал без миграций.

В связи со всем этим у меня возникает несколько вопросов:

1. Является ли migrate –run-syncdb подходящим решением для поставленной задачи? Может ли такой подход в будущем привести к каким-то проблемам?
2. Кому могут понадобиться миграции в bult-in applications кроме разработчиков django?
3. Необходимо ли каким-то образом после –run-syncdb использовать –fake-migrations в моем случае?
4. Почему manage.py migrate без флагов в пустом проекте создает файлы миграции самостоятельно, без необходимости вызывать makemigrations напрямую?
5. Если поочередно писать manage.py makemigrations <builtin_app_name> (auth) то миграции отображаются и выполняются, но если просто написать manage.py makemigrations - то ничего не происходит? И миграции не создаются. А, наверное, должны были бы поочередно создаваться миграции для всех подключенных приложений (включая искаробочные). Или не должны?
6. Что конкретно делает –fake-migrations, если можно на примере?

Спасибо за помощь.

Отредактировано xzvf (Сен. 5, 2017 16:13:31)

Офлайн

#2 Сен. 5, 2017 16:25:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

несколько вопросов по initial migrations

xzvf
Скажите, а как по-вашему Джанга должна определять, где юзерские модули, а где библиотечные?



Офлайн

#3 Сен. 5, 2017 19:32:40

xzvf
Зарегистрирован: 2016-09-04
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

несколько вопросов по initial migrations

Способов много, самый простой и очевидный - все приложения, начинающиеся с ‘django.*’ считать нативными, остальное детектить как third-party.
А по теме у вас есть, что сказать?

Отредактировано xzvf (Сен. 5, 2017 19:32:54)

Офлайн

#4 Сен. 6, 2017 05:47:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

несколько вопросов по initial migrations

xzvf
А по теме у вас есть, что сказать?
А я вам по теме и говорю. Показать вам сотню-другую пакетов в PyPi, которые начинаются с django*? django-debugtoolbar, django-extrensions и пр., которые не входят в состав джанги сами по себе, это чьи-то частные разработки, почему джанга по каким-то весьма сомнительным причинам не должна создавать для них миграции? Вообще ваша проблема надумана. Чем вам мешают каталоги с миграциями?



Офлайн

#5 Сен. 6, 2017 11:36:12

xzvf
Зарегистрирован: 2016-09-04
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

несколько вопросов по initial migrations

>> Показать вам сотню-другую пакетов в PyPi, которые начинаются с django*?

Вы какой-то ерундой занимаетесь, ей-богу. Кроме того, меня не верно цитируете. Вы забыли ТОЧКУ. Не django* (так действительно могут называться какие угодно либы), а django.* - то есть подлибы фреймворка django. Один пакет с названием django можно было бы оставить зарезервированным (подобные решения приняты не в одном месте этого замечательного фреймворка, но не здесь).

>> Вообще ваша проблема надумана. Чем вам мешают каталоги с миграциями?

Ну, вообще-то это концептуально кривовато. Хотел с кем-то обсудить. А можете что-то ответить по моим пронумерованным вопросам?

Офлайн

#6 Сен. 6, 2017 11:57:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

несколько вопросов по initial migrations

xzvf
Вы какой-то ерундой занимаетесь
Я ерундой занимаюсь? Это вы какую-то себе проблему придумали “концептуальную” и думаете, что родные джанговские приложения вроде django.contrib.auth чем-то особенным отличаются от остальных. А ничем они не отличаются, их точно так же как остальные нужно поддерживать миграциями. Завтра выйдет новая версия джанги, в модель сессии юзера добавят поле и? Как вы собираетесь вашу уже существующую БД привести в соответствие с новой схемой если у вас нет истории миграций?



Офлайн

#7 Сен. 6, 2017 12:53:11

xzvf
Зарегистрирован: 2016-09-04
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

несколько вопросов по initial migrations

О, вот это уже по делу Я исходил из того, что наверняка для разработки и дальнейшей поддержки более менее долгосрочного проекта будет взята ближайшая LTS версия фреймворка и, таким образом, вряд ли встроенные приложения будут мигрировать годами.

>> Как вы собираетесь вашу уже существующую БД привести в соответствие с новой схемой если у вас нет истории миграций?

Раз в 3 года можно конечно и руками что-то поправить, но в целом согласен.

Если вам не трудно, могли бы вы мне помочь с вопросами 4, 5, 6?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version