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

我不明白这一点。我在Django - Slugs - Key (slug)=() is duplicatedDjango: 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 字段?

标签: python django postgresql scrapy scrapy-pipeline


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 2014-12-08
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多