【问题标题】:Modify the django models修改django模型
【发布时间】:2013-01-10 05:00:02
【问题描述】:

我自己测试过。我有 Django 模型,并且数据库中已经有模型的实例。

然后我向模型添加了一个虚拟整数字段并运行manage.py syncdb。检查数据库,表没有任何反应。我没有看到添加的额外字段。

这是预期的行为吗?修改模型的正确方法是什么,这将如何改变数据库中已有的数据?

【问题讨论】:

  • 如果您希望对模型的更改反映在数据库中,您必须使用像 South 这样的迁移工具。否则,删除数据库中的表并重新运行syncdb

标签: django django-models django-database


【解决方案1】:

Django 不会改变已经存在的表,他们甚至在文档中这样说。这样做的原因是django不能保证不会丢失任何信息。

如果要更改现有表,您有两种选择。要么删除它们并再次运行syncdb,但如果你想保留它,你需要以某种方式存储你的数据。其他选项是使用迁移工具为您执行此操作。 Django 可以向您展示新数据库架构的 SQL,您可以将其与当前版本的数据库进行比较以创建更新脚本。

如果更改很小并且您不想使用迁移工具,您甚至可以手动更新数据库,不过我建议您使用一个。

【讨论】:

    【解决方案2】:

    请使用 south 进行任何类型的更改以反映到您的数据库表中, 这是使用南的链接 Link for South documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多