django 1.7 makemigrations在现有的桌子上

时间:2014-09-19 08:05:58

标签: django django-migrations

我想将Django 1.7用于新项目。 我已经有了许多记录的数据库。

在许多Django教程中, 它演示了如何从一个全新的项目中使用迁移系统。

就我而言,使用django-admin startapp todo 并将使用名为notesnote的现有表。 我使用inspectdb来转储notesnote类并将其写入todo/models.py

class NotesNote(models.Model):
    title = models.CharField(max_length=100)
    text = models.TextField()
    pub_date = models.DateTimeField()
    authors = models.CharField(max_length=10)

然后

python manage.py makemigrations todo

生成todo/migrations/0001_initial.py 然后

python manage.py migrate --fake todo

进行假迁移(导致该表已存在)。

然后,如果我想修改表格的字段,请添加“类别”字段

category = models.CharField(max_length=30)

然后通过以下方式生成0002迁移差异:

python manage.py makemigrations todo

但是,当我通过

进行迁移时
python manage.py migrate todo

我收到如下错误:

  

django.db.utils.OperationalError:没有这样的表:todo_notesnote

似乎它在现有表格前面添加了应用程序的名称。 我应该采取哪些步骤为现有表格进行可用的迁移?

1 个答案:

答案 0 :(得分:0)

关于integrating Django with a legacy database的文档包含一些针对您的用例的有用建议:特别是您应该在内部 Meta 中添加 db_table ='notesnote'选项你的模特的一类。