我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
当前回答
这很简单,你需要在空的migrations文件夹中添加空的init.py。 然后使用"python manage.py makemigrations"检查迁移
目录结构,
你的应用 迁移 init.py
其他回答
对于这个错误,我的问题在于我包含了:
class Meta:
abstract = True
里面的模型,我想创建迁移。
要为应用程序创建初始迁移,请运行makemigrations并指定应用程序名称。迁移文件夹将被创建。
./manage.py makemigrations <myapp>
你的应用必须首先包含在INSTALLED_APPS中(在settings.py内部)。
另一种可能是您压缩了一些迁移并应用了结果迁移,但忘记从其中删除replace属性。
更新:在尝试之前,应该确保migrations文件夹中存在__init__.py文件:
./manage.py makemigrations <myapp1> <myapp2>…< myappN >
有时。/manage.py makemigrations优于。/manage.py makemigrations <myapp>,因为它可以处理应用程序之间的某些冲突。
这些情况都是悄无声息地发生的,需要几个小时的咒骂才能理解可怕的“检测到没有变化”消息的真正含义。
因此,使用下面的命令是一个更好的选择:
./manage.py makemigrations <myapp1> <myapp2>…< myappN >
还有一个边缘情况和解决方案:
我添加了一个布尔字段,同时添加了一个@属性引用它,具有相同的名称(doh)。注释属性和迁移看到并添加新字段。重新命名财产,一切都很好。