为数据库中的现有条目生成slug字段数据

时间:2012-11-06 02:49:37

标签: python django slug

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

我想知道,有没有办法强制Django为迁移前的所有现有数据创建slug字段条目...

*编辑 我在admin.py

中使用此行填充我的slug字段

prepopulated_fields = {“slug”:(“name”,“price”)}

1 个答案:

答案 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