Django:Key(slug)=(*)已经存在

时间:2018-02-21 03:23:33

标签: python django

我是Django和python的新手,我想了解更多有关如何填充Postgres数据库的信息。

这是我目前的型号:models.py

from django.template.defaultfilters import slugify

class Skill(models.Model):
    name = models.TextField()
    slug = models.TextField(unique = True)
    def __unicode__(self):
        return "%s" % self.name

和我的观点:views.py

r = r.json()

try:
    Skills = r['data']['skills']
except:
    pass

for skill in Skills:
    skill = Skill.objects.create(name=skill['name'],slug=slugify(skill['name']))

我收到错误: 异常类型:IntegrityError

详细信息:Key(slug)=(系统工程)已经存在。

我一直在阅读similar post,但仍然无法解决我的问题。当对象已存在于数据库中时,objects.create()将显示错误,但我收到上述代码的错误。可以" unique = True"导致错误?你怎么解决这个问题?

跟进

我的问题比我想象的要简单。我能够运行psql交互式终端并查看我的数据填充。我无法在管理网站上看到它,因为我错过了在admin.py上注册模型

1 个答案:

答案 0 :(得分:0)

当您提供unique=True时,该字段在整个表格中都是唯一的。因此,当您尝试添加已存在于DB中的数据时,将引发错误。有关详细信息,请参阅此official doc