django makemigrations没有检测到新模型

时间:2015-09-11 08:19:42

标签: python django

我之前为了让我的django应用程序知道我的遗留MySql数据库中的表格而做了几个版本,并且它工作正常。它生成了models.py。现在,我想添加一个新表" UserDetails" ,这是django提供的用户的扩展。我写了以下代码:

class UserDetails(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profilepicture  = models.CharField(max_length=256)
    telephone = models.CharField(max_length=100)
    aboutme = models.TextField(max_length=3000)
    paymentlinked = models.IntegerField()
    bidcount = models.IntegerField()
    lifetimebidused = models.IntegerField()
    totallogins = models.IntegerField()
    last_updatedon = models.DateField()
    last_bidupdate  = models.DateField()

保存文件后,我在命令提示符下运行以下命令:

  

python manage.py makemigrations

似乎makemigrations没有看到我在models.py中写的新类,因为它始终输出'没有检测到更改'

我是正确地做了还是有什么问题?我检查了我的MySQL数据库并确认没有名为UserDetails的表已存在。

5 个答案:

答案 0 :(得分:4)

我在开发过程中遇到了这个问题,这种组合对我有所帮助:

python manage.py makemigrations mymodule

此命令为特定模块创建迁移。它应该在INSTALLED_APPS,但是如果它不在那里你就会收到警告。

python manage.py migrate

另外,请提一下xhenhen的回答,我用PyCharm创建了包,所以默认情况下我有 init .py文件。

答案 1 :(得分:2)

我在使用Django 1.11时遇到了类似的问题(“在添加新模型时未检测到更改”),并通过导入__init__.py models中的新模型(实际上更好地导入所有模型)来解决} package:

from .student import Student
from .teacher import Teacher

这里写着:

答案 2 :(得分:2)

确保您的应用已在 settings.py 中注册, 如果是这样,请尝试运行:

 python manage.py makemigrations "app_name"

答案 3 :(得分:0)

如果您忘记在setting.py文件中注册应用,则会发生这种情况。

答案 4 :(得分:-1)

models.py需要位于应用程序包中,而不是在主目录中才能使makemigrations工作。