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 上聚合

Django:Postgres 连接未关闭

Postgres:使用 django 对 json 键进行值查询

Django 无法在 Docker 设置中连接到 Postgres

Django 从 MySQL 迁移到 Postgres