Django South 数据迁移运行了两次

Django South data migration is running twice

提问人:Cato Johnston 提问时间:2/26/2010 更新时间:5/14/2012 访问量:3828

问:

我有一个迁移:

    ...

def forwards(self, orm):
    for p in products.models.Product.objects.all():
        new = cart.models.Product(title = p.title)
        new.save()

    def backwards():
        ...

但是当我运行migrate时,它会在循环中运行两次。

姜戈-南

评论


答:

8赞 Ofri Raviv 2/26/2010 #1

你有吗

no_dry_run = True

在迁移定义中?

此外,我认为你应该使用orm.Product.objects.all()

5赞 b1_ 5/14/2012 #2

发生这种情况是因为 South 运行了两次:第一次它没有接触 DB,第二次推送到 db 的更改。

快速运行解决方案./manage migrate your_app --db-dry-run

或使用

if not db.dry_run:

在代码的向前/向后部分

这里讨论 http://south.aeracode.org/ticket/138