Django Postgres objects.create ValidationError
Posted
技术标签:
【中文标题】Django Postgres objects.create ValidationError【英文标题】: 【发布时间】:2017-05-10 12:11:42 【问题描述】:如何在不丢失数据的情况下将 Django 的 id 与 Postgres 同步?
不知何故,我让 Django 进入了一种无法再创建对象的奇怪状态。调用:
Chapter.objects.create(title = 'hello')
抛出错误:
Traceback(最近一次调用最后一次):
File "/usr/local/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
psycopg2.IntegrityError: duplicate key value violates unique constraint "genesis_chapter_pkey"
DETAIL: Key (id)=(2) already exists.
title
不是唯一字段。这怎么可能?我怀疑 Django 已经与 Postgres 不同步并试图分配一个使用过的 id,但我没有做任何比调用 objects.create
更特别的事情。我只使用了 Django ORM。这怎么可能让 Django 不同步呢?
【问题讨论】:
title
不是唯一字段
你能提供你的模型吗?
有四种型号。这是 psql 输出。 drive.google.com/file/d/0B-lNrhyIv47CRGE4eXdqdFA2Vzg/…
为什么投反对票?无关?不清楚?
我的意思是 django 模型代码
【参考方案1】:
我想问题在于您在 postgresql 中创建 id 时如何定义它。您应该将 id 元素类型定义为 serial
以实现自动递增。
【讨论】:
【参考方案2】:试试
new_chapter = Chapter(title='hello')
new_chapter.save()
【讨论】:
你能做一个'描述''\d chapter_chapters'吗?并在这里发布。你也可以尝试插入chapter_chapters(标题)值('hello');以上是关于Django Postgres objects.create ValidationError的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:模块 'django.contrib.postgres.fields' 没有属性 'JSONField'
Django/Postgres:在 RangeField 上聚合
Postgres:使用 django 对 json 键进行值查询