我正在尝试从Django 1.6.7升级到Django 1.7.1,所以我一直在尝试迁移我的应用。
我已关注django docs here。
我从已安装的应用中删除了南方。
在迁移目录中,我删除了编号的迁移文件和.pyc文件,但我保留了目录& __ init__.py文件。
然后我跑了:python manage.py makemigrations your_app_name
我收到以下确认消息:
Migrations for 'your_app_name':
0001_initial.py:
- Create model UserProfile
接下来我跑:
python manage.py migrate your_app_name
我收到以下错误:
CommandError: App 'your_app_name' does not have migrations (you cannot selectively sync unmigrated apps)
根据文档,我也跑了:
python manage.py migrate --fake your_app_name
我收到了同样的错误消息:
CommandError: App 'your_app_name' does not have migrations (you cannot selectively sync unmigrated apps)
有人能说清楚为什么这对我不起作用吗?
答案 0 :(得分:13)
如果您只有一个应用,则可以在不指定应用或迁移的情况下运行migrate。
如果是这样,首先要检查的是您的应用名称与INSTALLED_APPS下的settings.py中指定的名称相匹配。
正如评论中所指出的,应用名称可以采用[parent_app]。[app_name]的形式。在这种情况下,迁移仅需要[app_name]。
答案 1 :(得分:10)
我注意到只有那些实际包含migrations
文件夹且包含文件__init__.py
的应用才能被迁移识别。仅在你的应用程序中只有models.py的IE是不够的。
答案 2 :(得分:6)
您的应用必须包含models.py
文件(甚至是emtpy)。
来源:https://groups.google.com/forum/#!msg/django-users/bsTZEmxgDJM/wH0p3xinBWIJ
答案 3 :(得分:2)
提到另一个可能的原因:
在我的Django应用程序中,我添加了正确的迁移并使用pip安装了应用程序并得到了相同的错误。
我缺少的是一个正确的MANIFEST.in文件
此外,setup.py文件中setup()中的参数include_package_data
未设置为True
。
答案 4 :(得分:-1)
要为应用创建初始迁移,请运行makemigrations并指定应用名称。将创建迁移文件夹。
./manage.py makemigrations <myapp>
您的应用必须首先包含在INSTALLED_APPS中(在settings.py内部)。