我一定做错了什么。我到处都看到有人说“查看迁移文件夹”,但即使我可以看到迁移,也没有文件夹。
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
Run Code Online (Sandbox Code Playgroud)
简短回答:迁移源自 Django 应用程序和您安装在INSTALLED_APPS. 不是你自己定义的那些。
迁移是按应用生成的,并存储在some_app/migrations.
即使您没有为您的应用定义迁移,通常也会发生迁移,因为您(可能)在您的INSTALLED_APPS.
例如,您很可能INSTALLED_APPS包含:
# settings.py
INSTALLED_APPS = [
# ...
'django.contrib.auth',
# ...
]Run Code Online (Sandbox Code Playgroud)
如果我们看一下这个应用程序 [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.pyRun Code Online (Sandbox Code Playgroud)
这些与您在为auth应用程序执行迁移时在控制台上看到的迁移完全相同(第二部分)。