我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。

通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。

调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。

如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?


当前回答

如果你在你的模型Meta中有managed = True,你需要删除它并进行迁移。然后再次运行迁移,它将检测到新的更新。

其他回答

对于这个错误,我的问题在于我包含了:

class Meta:
   abstract = True

里面的模型,我想创建迁移。

如果你在你的模型Meta中有managed = True,你需要删除它并进行迁移。然后再次运行迁移,它将检测到新的更新。

我读过很多关于这个问题的答案,通常都是简单地用其他方式进行移民。但对我来说,问题在于模型的Meta子类。

我有一个应用程序配置,说label = <应用程序名称>(在apps.py文件,旁边的models.py, views.py等)。如果你的元类没有与应用标签相同的标签(例如,因为你把一个太大的应用拆分成多个),就不会检测到任何变化(也不会有任何有用的错误消息)。所以在我的模型类中,我现在有:

class ModelClassName(models.Model):

    class Meta:
        app_label = '<app name>' # <-- this label was wrong before.

    field_name = models.FloatField()
    ...

运行Django 1.10。

我忘记写正确的论点了

class LineInOffice(models.Model):   # here
    addressOfOffice = models.CharField("Корхоная жош",max_length= 200)   #and here
    ...

在models.py 然后就不那么烦人了

在应用程序“myApp”中未检测到任何变化

解决方案是你必须把你的应用包含在INSTALLED_APPS中。

我错过了它,我发现了同样的问题。

在指定我的应用程序名称迁移成功

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'boards',
]

请注意,我在最后提到了boards,这是我的应用程序名称。