2

我正在使用带有 South 的 Django 1.4 进行迁移。我刚刚在我的一个模型中添加了一个 slug 字段并进行了迁移。slug 字段会自动填充所有新对象,并且可以完美运行。

我想知道,有什么方法可以强制 Django 为迁移之前的所有现有数据创建 slug 字段条目......

*编辑我在 admin.py 中用这一行填充我的 slug 字段

prepopulated_fields = {"slug": ("name","price")}

4

1 回答 1

3

当我将 slug 字段添加到现有表时,我使用了如下所示的 South 数据迁移:

from django.template.defaultfilters import slugify

class Migration(DataMigration):

    def forwards(self, orm):
        for obj in orm.MyModel.objects.filter(slug__isnull=True):
            slug = slugify(obj.name)
            obj.slug = slug
            suffix = 2
            while orm.MyModel.objects.filter(slug=obj.slug).exists():
                obj.slug = "%s-%d" % (slug, suffix)
                suffix = suffix + 1
            obj.save()


    def backwards(self, orm):
        pass # no need to change anything
于 2012-11-06T02:56:34.447 回答