Django 自动创建 slug 和完整性错误

Posted

技术标签:

【中文标题】Django 自动创建 slug 和完整性错误【英文标题】:Django auto create slug and integrity error 【发布时间】:2018-08-05 00:01:45 【问题描述】:

我不明白这一点。我在Django - Slugs - Key (slug)=() is duplicated 和Django: Key (slug)=(*) already exists 看到了这些帖子。

这是我的错误信息:

django.db.utils.IntegrityError:重复键值违反唯一约束“caseAT_case_slug_key” 详细信息:键 (slug)=() 已存在。

在文档中它说: https://docs.djangoproject.com/en/1.8/howto/writing-migrations/#migrations-that-add-unique-fields 应用向具有现有行的表添加唯一不可为空字段的“普通”迁移将引发错误,因为用于填充现有行的值仅生成一次,从而打破了唯一约束。

但这不是迁移。这是一个 djangoitem 管道。该模型具有从标题自动创建的 slug。因此,我没有将 slug 放入管道中。如果它期望创建 slug 并且因为它已经存在而犹豫不决,为什么它不期望创建所有其他密钥?如果它不在管道中,为什么它现在要创建它?因为它期望创造它?所以我应该删除该字段上的自动创建?那么它是如何创建的呢?我确实希望我的蛞蝓是独一无二的。

对我来说,这似乎是循环和疯狂的,但这有什么不同呢?没有。感谢您的帮助。

【问题讨论】:

这里没有足够的信息。这与迁移无关;该错误告诉您您正在尝试创建多个带有空 sl 的项目。但是我们无法知道为什么 slug 是空的,因为您没有显示任何代码。什么是创建项目?什么应该填充 slug 字段? 【参考方案1】:

对于任何追随我的人,我都有解决方案。我需要做的就是将 null=True 添加到 slugfield 中。它不是真正的重复键。它是一个重复值,'',表示为 slug['']。在此处查看 Alasdair 的答案: Django unique, null and blank CharField giving 'already exists' error on Admin page

【讨论】:

以上是关于Django 自动创建 slug 和完整性错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 2.0.4 中从我的专辑模型自动生成 slug

Django-cms 和自动阻塞

django 1.9 slug 字段不适用于外语

如何在 Django 中自动生成 URL

使用自定义帖子名称自动创建一个链接,该链接返回到自定义帖子存档页面(包括主题 slug)

模型表单中的 Django auto slug