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