南迁移 - 添加唯一约束时如何处理不一致的数据

时间:2014-01-13 08:45:02

标签: django django-models django-south

我的模型看起来像这样:

class CollectionResource(models.Model):
    resource = models.ForeignKey(Resource)
    collection = models.ForeignKey(Collection)
    order = models.IntegerField(null=True, blank=True)

我想确保每个集合都有一个唯一的订单值,所以我添加了:

class Meta:
    unique_together = ('collection', 'order')

manage.py schemamigration --auto my_app
manage.py migrate my_app

但是我收到了完整性错误,因为我的数据库中的值不符合新约束 (我已经拥有多次具有相同值的集合)

我知道南方不会制造一些伏都教魔法并修复我的数据:)但我不知道如何修复这些值。我应该为这份工作写一份原始SQL吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

看看南方的data migrations。您必须编写一个方法来将数据转换为您的规范(理想情况下,这是一种用于回滚更改的反向方法,但对于像此任务这样的事情并不总是可行)。