【发布时间】:2014-01-24 11:51:20
【问题描述】:
由于syncdb 不会更改现有表[1] 我想知道登录到数据库并更改结构会有什么缺点。
更具体地说,我想知道如果我更改字段的长度或类型(例如,INT 到 BIGINT)会触发哪些潜在问题。
Django 尝试截断或更改值以适应模型中定义的范围是否会有任何问题?
【问题讨论】:
标签: python sql django django-models
由于syncdb 不会更改现有表[1] 我想知道登录到数据库并更改结构会有什么缺点。
更具体地说,我想知道如果我更改字段的长度或类型(例如,INT 到 BIGINT)会触发哪些潜在问题。
Django 尝试截断或更改值以适应模型中定义的范围是否会有任何问题?
【问题讨论】:
标签: python sql django django-models
缺点?如果您在谈论简单的项目,那么没有。做任何让你高兴的事:)。如果项目变得更大,请阅读下一段:P
如果它是较大的项目并且有其他贡献者(即使没有),您需要对其进行版本控制。因此,手动更改是不好的。因为你不能在不改变数据库的情况下回到早期版本......但是......
但既然你说的是手动操作,我觉得我需要指出http://south.aeracode.org/的存在
创建它的原因可能是您不应该手动执行此操作。
顺便说一句。我在这里拖钓并在脸颊上说舌头......不要100%认真对待这篇文章:P
【讨论】:
Django South 是解决这个问题的方法。它是一个“必须拥有”的应用程序,可以包含在任何项目中(在这里我将不同意@OdifYitsaeb 的回答),而不仅仅是大型项目。它是如此简单和强大,如果你不在一个很小的个人项目中使用它,你实际上是在为自己创造更多的工作。
(我相信)1.7 也很快将它包含在 Django 核心中,所以现在熟悉它是个好主意。
【讨论】:
django-evolution 怎么样??