Django South数据迁移运行了两次

Cat*_*ton 6 django django-south

我有一个迁移:

    ...

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

    def backwards():
        ...
Run Code Online (Sandbox Code Playgroud)

但是当我运行迁移时,它会在循环中运行两次.

Ofr*_*viv 8

你有没有

no_dry_run = True
Run Code Online (Sandbox Code Playgroud)

在迁移定义中?

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


b1_*_*b1_ 5

发生这种情况是因为South运行两次:第一次没有触及DB,第二次推送更改为db.

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

或者使用

if not db.dry_run:

在前向/后向部分的代码中

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