Django 1.7中的迁移

时间:2014-04-14 19:10:00

标签: django django-migrations

我目前正在参与一个项目,我正在使用Django 1.7开发版。我希望使用&#34将我在模型中所做的更改(添加字段,删除模型等)添加到数据库模式中; makemigrations"和"迁移" commands.I添加了一个" age"字段到我的应用程序中的一个模型。

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"无法弄清楚对架构所做的更改。任何建议我如何才能使其工作?

3 个答案:

答案 0 :(得分:5)

如果您是adding initial migrations to an app,则在使用makemigrations命令时必须包含应用名称。

python manage.py makemigrations your_app_label

答案 1 :(得分:2)

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

manage.py makemigrations myappname

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

manage.py migrate

如果你的应用程序在数据库中,修改了它的模型并且没有更新makemigrations上的更改,你可能还没有迁移它。 将模型更改回原始形式,运行第一个命令(使用应用程序名称)并迁移...它会伪造它。一旦这样做,就可以在模型上放回更改,运行makemigrations并再次迁移,它应该可以正常工作。

答案 2 :(得分:-3)

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

  

rm -rf your_app / migrations / *

     

python manage.py migrate

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

django 1.7c1对我有用