3

我目前参与了一个使用 Django 1.7 开发版本的项目。我想使用“makemigrations”和“migrate”将我在模型中所做的更改(添加字段、删除模型等)传播到数据库模式中” 命令。我在我的应用程序中的一个模型中添加了一个“年龄”字段。

country = models.CharField(max_length=50, blank=True)
address = models.CharField(max_length=100, blank=True)
postal_code = models.IntegerField(max_length=50, blank=True)
city = models.CharField(max_length=50, blank=True)
phone_no = models.CharField(max_length=25, blank=True)
skype_name = models.CharField('Skype Username',max_length=50, blank=True)
age=models.IntegerField(max_length=25,blank=True)

当我使用“makemigrations”命令时,输出就像---“未检测到更改”。我猜“makemigrations”无法弄清楚对架构所做的更改。有什么建议可以让它工作吗?

4

3 回答 3

5

如果要将初始迁移添加到应用程序,则必须在使用makemigrations命令时包含应用程序名称。

python manage.py makemigrations your_app_label
于 2014-04-14T22:31:20.403 回答
2

如果这是您第一次迁移该应用程序,您必须使用:

manage.py makemigrations myappname

一旦你这样做,你可以这样做:

manage.py migrate

如果您的应用程序在数据库中,修改了它的模型并且它没有更新 makemigrations 上的更改,那么您可能还没有迁移它。将您的模型改回其原始形式,运行第一个命令(使用应用程序名称)并迁移......它会伪造它。完成后,将更改恢复到模型上,运行 makemigrations 并再次迁移,它应该可以工作。

于 2014-10-03T19:34:06.233 回答
-3

我有时也有同样的问题。我设法通过以下方式填充数据库中的更改:

rm -rf your_app/迁移/*

python manage.py 迁移

如果它不起作用,请考虑手动删除表,如果其中没有数据。

它对我有用 django 1.7c1

于 2014-07-24T08:28:47.467 回答