Quando trabalhos em projetos Django, a partir do momento em que ele sofre inúmeras mudanças, acabamos usando as migrations para que o banco possa refletir as alterações. Com o tempo, a quantidade delas aumenta, e não sabemos exatamente qual módulo de migração depende de outra. Para resolver esse problema, foi criado o django-migrations-graph.
O objetivo ele é dar uma opção via management command, para que ele acesse as migrações e defina no terminal as dependências entre elas. Então vamos começar a usar.
Instalação
Antes de mais nada, vamos preparar um ambiente virtualenv e criar um projeto de exemplo:
$ python3 -m venv .venv $ pip install django $ django-admin startproject graph_example .
Depois, vamos instalar o pacote e inserir o aplicativo no INSTALLED_APPS do projeto:
$ pip install django-migrations-graph
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # Third Apps 'migraph', ]
Instalado e configurado, vamos aproveitar os apps contrib para verificar a dependência entre contrib.auth e contrib.admin:
$ python manage.py migration_dependencies auth admin [auth] auth/0001_initial Depending: admin/0001_initial Depends on: contenttypes/__first__ auth/0002_alter_permission_name_max_length auth/0003_alter_user_email_max_length auth/0004_alter_user_username_opts auth/0005_alter_user_last_login_null auth/0006_require_contenttypes_0002 Depends on: contenttypes/0002_remove_content_type_name auth/0007_alter_validators_add_error_messages auth/0008_alter_user_username_max_length [admin] admin/0001_initial Depends on: auth/__first__ contenttypes/__first__ admin/0002_logentry_remove_auto_add
É muito interessante! Vendo a saída, ao passarmos os aplicativos para efetuar a introspecção das migrações, ele mostra acima que o auth/0001initial depente do 0001_initial do _contrib.admin, e que este depende de vários outros do contrib.contenttypes. Vemos também que em cada app ele separa por [nome do app].
Esse app vai ajudar muito quando precisa trabalhar em projetos que ainda não conhece como um todo, aprender mais das migrações, como foram feitas e suas dependências.
Espero que tenham gostado. Até mais!