python - Django - Slugs - Key (slug)=() 重复

标签 python django

刚开始玩 Django,发现了一个链接 here关于如何创建 slug。我被告知对现有模型执行以下更改:

from django.template.defaultfilters import slugify

class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)
    views = models.IntegerField(default=0)
    likes = models.IntegerField(default=0)
    slug = models.SlugField(unique=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Category, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.name

在我尝试使用以下方法迁移数据库之前,效果非常好:

python manage.py makemigrations

上面要求一个默认值,所以按照指南,我给了它 ''。然后:

python manage.py migrate

以上返回“详细信息:Key (slug)=() 是重复的。”

我不完全确定为什么会这样。可能是因为我要添加一个唯一的新字段,但我无法用 '' 填充它?如果是这样,我需要做什么才能填充数据库?

最佳答案

文档 explains how to migrate in these circumstances .快速总结:

  • 创建不带 unique=True 的字段
  • 使用 RunPython 函数创建一个迁移,该函数遍历所有类别并调用它们的保存,这将填充 slug
  • 创 build 置 unique=True 的最终迁移。

关于python - Django - Slugs - Key (slug)=() 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31162620/

相关文章:

Python 3.4.3 无法构建这些模块 : _hashlib _ssl

python - 清理 Python 模块并重新启动 Mac OS X

python - Django 上具有相同模型的不同数据库

django - django测试框架是否支持多个数据库?

django - 无法导入 Celery 模块

python - 随着时间的推移处理微 Controller 数据

python - 在 Python 图中添加边(初学者)

python - Python中字符串的条件重命名

django:为什么 RequestContext 设置为 context_instance?

python - 将数据库内容索引到 Elasticsearch