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

时间:2018-02-25 11:54:33

标签: python django postgresql scrapy scrapy-pipeline

我不明白这一点。我在这里看到了帖子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。因此,我没有在管道中放入slu ..如果它期望创建slug,并因为它已经存在,那么为什么它还没有期望创建所有其他键?如果它不在管道中,为什么它现在尝试创建它?因为它期望创造它吗?所以我应该删除该字段上的自动创建?然后如何创建它?我确实希望我的slu is是独一无二的。

这对我来说似乎是圆形和疯狂的,但这有什么不同呢?没有。您的帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

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