假设我有一个表格,我刚刚添加了一个新字段。我(并且我的意思是一个同事)应用了一个数据迁移,它不满足我们尚未放入的unique_together约束。所以迁移成功了。
但是现在我们要添加unique_together约束,正确的过程是什么?我可以想到三种可能性,其中没有一种看起来超级有吸引力
应该注意的是,那些违反了unique_together约束的旧行我真的不在乎了。
我在django 1.7上使用postgresql
答案 0 :(得分:0)
- 我是否必须返回并手动强制执行唯一约束,然后执行迁移以更改字段?
醇>
我不推荐这样做,因为您最终会得到一组可能会在其他部署中中断的迁移。如果你只有一个数据库,你可能可以逃脱它,但在这种情况下,我会在事后重置你的迁移。您不想要的是留下一组在重新运行时会失败的迁移。
- 更改字段,它只适用于较新的条目(SQL忽略违反约束的旧条目......非常确定这不是一件事)
醇>
至少在某些数据库上似乎可以做到这一点。我不确定这有什么实际后果,但这似乎是一个坏主意。你提到你并不真正关心这些行。如果你不在乎你真的可以删除它们,那么问题就解决了!但是如果你足够关心它们,你应该确保它们与你的数据库模式一致(包括约束)。
- 撤消数据迁移,迁移到unique_together,然后进行有效的数据迁移(这似乎是"正确"事情确实如此,但实际上很难实现)
醇>
这确实是正确的做法,我无法想到更好的主意。
答案 1 :(得分:0)
有django方式: