Django 1.7 - 应用程序'your_app_name'没有迁移
Posted
技术标签:
【中文标题】Django 1.7 - 应用程序\'your_app_name\'没有迁移【英文标题】:Django 1.7 - App 'your_app_name' does not have migrationsDjango 1.7 - 应用程序'your_app_name'没有迁移 【发布时间】:2014-12-29 18:31:41 【问题描述】:我正在尝试从 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)
谁能解释一下为什么这对我不起作用?
【问题讨论】:
makemigrations
是否在您的migrations
文件夹中创建了新文件?
是的。新文件名为 0001_initial
【参考方案1】:
我注意到,只有那些实际包含 migrations
文件夹且包含文件 __init__.py
的应用程序才能被迁移识别。 IE 在你的应用中只有 models.py 是不够的。
【讨论】:
【参考方案2】:如果您只有一个应用,则在不指定应用或迁移的情况下运行 migrate 可能会起作用。
如果是这样,首先要检查的是您的应用名称是否与您在 INSTALLED_APPS 下的 settings.py 中指定的名称匹配。
正如 cmets 中所指出的,应用名称可以采用 [parent_app].[app_name] 的形式。在这种情况下,迁移只需要 [app_name]。
【讨论】:
第二部分可能会让来到这里的人有点困惑,因为安装的应用程序名称可能是 '[parent_app].[app_name]' 而 migrate.py 命令只需要 [app_name] .令人困惑的是,可能会出现与原始海报相同的错误。 谢谢@TheCardCheat!我在使用parent_app.app_name
却一无所获。【参考方案3】:
您的应用必须包含一个models.py
文件(甚至是 emtpy)。
来源:https://groups.google.com/forum/#!msg/django-users/bsTZEmxgDJM/wH0p3xinBWIJ
【讨论】:
【参考方案4】:只是提到另一个可能的原因:
在我的 Django 应用程序中,我添加了正确的迁移并使用 pip 安装了应用程序并得到了同样的错误。
我缺少的是正确的 MANIFEST.in 文件
setup.py 文件中 setup() 中的参数 include_package_data
也未设置为 True
。
【讨论】:
以上是关于Django 1.7 - 应用程序'your_app_name'没有迁移的主要内容,如果未能解决你的问题,请参考以下文章
在为 Django 1.6 和 1.7 设计应用程序时,是不是有推荐的处理 AppConfig 的方法?