我正在使用Django 1.4和South进行迁移。我刚给我的一个模型添加了一个slug字段并进行了迁移。 slug字段会自动填充所有新对象并完美运行。
我想知道,有没有办法强制Django为迁移前的所有现有数据创建slug字段条目...
*编辑 我在admin.py
中使用此行填充我的slug字段prepopulated_fields = {“slug”:(“name”,“price”)}
答案 0 :(得分: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