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

标签 python django slug

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

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

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

prepopulated_fields = {"slug": ("名称","价格")}

最佳答案

当我向现有表添加 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

关于python - 为数据库中现有条目生成 slug 字段数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243625/

相关文章:

使用 Slug 的 C# Mvc 通用路由

javascript - Ember 渲染 404 且 URL 无效

python - 为类似于 R 的模块、函数、类生成单个 HTML 帮助页面

python - Pandas - 创建一个对称矩阵来计算记录数

python - 为什么 Django 试图打开我没有告诉它的 URL?

python - 为什么 Django 在升级到 v2.2 后发送重复的错误消息?

python - Django:如何在 list_display 中包含内联模型字段?

python - 如果 slug 已经存在于 postgresql 数据库中,则跳过保存行 - python

python - 将文本 append 到全局变量

python - 将十进制范围转换为 Numpy 数组,每一位都是一个数组元素