我之前为了让我的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的表已存在。
答案 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工作。