首页 > 解决方案 > Where is the Django migrations folder?

问题描述

I must be doing something wrong. Everywhere I see people saying "Look at the migrations folder" but even though I can see migrations there is no folder.

Karls-Mac-mini:django_test karl$ tree
├── django_test
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-35.pyc
│   │   ├── settings.cpython-35.pyc
│   │   └── urls.cpython-35.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Karls-Mac-mini:django_test karl$ python manage.py showmigrations
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
sessions
 [X] 0001_initial

标签: djangomigration

解决方案


简短的回答:迁移源自您安装的 Django 应用程序和第三方应用程序INSTALLED_APPS。不是你自己定义的。

迁移是为每个应用程序生成的,并存储在some_app/migrations.

即使您没有为您的应用程序定义迁移,通常也会发生迁移,因为您(可能)在您的INSTALLED_APPS.

例如,您很可能INSTALLED_APPS包含:

# settings.py

INSTALLED_APPS = [
    # ...
    'django.contrib.auth',
    # ...
]

如果我们看一下这个应用程序的源代码 [GitHub],我们会看到目录migrations。通过将此应用程序INSTALLED_APPS添加到您的项目中,您已将 Django 库本身(或第三方)中定义的应用程序添加到您的项目中,因此这些应用程序的迁移以相同的方式处理(实际上没有什么“神奇”的这些应用程序,更多的是它们处理常见问题,因此您不再需要关心这些)。

django.contrib.auth应用程序的文件结构类似于(省略噪音):

django/
    contrib/
        auth/
             migrations/
                __init__.py
                0001_initial.py
                0002_alter_permission_name_max_length.py
                0003_alter_user_email_max_length.py
                0004_alter_user_username_opts.py
                0005_alter_user_last_login_null.py
                0006_require_contenttypes_0002.py
                0007_alter_validators_add_error_messages.py
                0008_alter_user_username_max_length.py
                0009_alter_user_last_name_max_length.py

当您为应用程序执行迁移时,这些迁移与您在控制台上看到的迁移完全相同auth(第二部分)。


推荐阅读