django - 迁移 - Django 1.9 makemigrations未检测到任何变化

我试图使用makemigrations命令在现有的应用程序中迁移,但是,它输出"No changes detected"

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

如果它创建文件夹,如果它不存在,我错过什么了吗?

时间:

若要为应用程序创建初始迁移,请运行makemigrations,并且指定应用程序名称,将创建迁移文件夹。


./manage.py makemigrations <myapp>



你的应用程序必须包含在INSTALLED_APPS第一个(内部settings.py )中。

我没有使用models.py文件,但是,创建了一个models目录,并且在那里创建了my_model.py文件,在那里我,Django找不到我的模型,所以,它输出了没有可应用的迁移。

我的解决方案是:在my_app/models/__init__.py文件中添加了以下行: from .my_model import MyModel

我阅读了这个问题的许多答案,它们只是以其他方式运行makemigrations ,但是,对我来说,问题是模型的Meta子类。

我有一个应用程序配置 label = <app name> (在apps.py文件中,models.pyviews.py等),如果你的元类没有与应用程序标签(例如,因为你将一个太大的应用程序分割成多个)相同的标签,则无法检测到更改(没有任何有用的错误消息),因此在我的模型类中,我现在拥有:


class ModelClassName(models.Model):



 class Meta:


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



 field_name = models.FloatField()


 ...



在这里运行Django 1.10。

确保应用程序名在settings.py INSTALLED_APPS中,否则不管你做什么,它都不会运行迁移。


INSTALLED_APPS = [


 'django.contrib.admin',


 'django.contrib.auth',


 'django.contrib.contenttypes',


 'django.contrib.sessions',


 'django.contrib.messages',


 'django.contrib.staticfiles',



 'blog',


]



然后运行:


./manage.py makemigrations blog



我从Django外部复制了一个表,而且Meta类默认为"managed = false",例如:


class Rssemailsubscription(models.Model):


 id = models.CharField(primary_key=True, max_length=36)


 ...


 area = models.FloatField('Area (Sq. KM)', null=True)



 class Meta:


 managed = False


 db_table = 'RSSEmailSubscription'



通过将manged转换为true,makemigrations开始接收更改。

解决方案是在INSTALLED_APPS中包含你的应用程序。

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

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


INSTALLED_APPS = [


 'django.contrib.admin',


 'django.contrib.auth',


 'django.contrib.contenttypes',


 'django.contrib.sessions',


 'django.contrib.messages',


 'django.contrib.staticfiles',


 'boards',


]



...