我正在使用带有 South 的 Django 1.4 进行迁移。我刚刚在我的一个模型中添加了一个 slug 字段并进行了迁移。slug 字段会自动填充所有新对象,并且可以完美运行。
我想知道,有什么方法可以强制 Django 为迁移之前的所有现有数据创建 slug 字段条目......
*编辑我在 admin.py 中用这一行填充我的 slug 字段
prepopulated_fields = {"slug": ("name","price")}
当我将 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