【问题标题】:Django set autofield value in bulk_createDjango 在 bulk_create 中设置自动字段值
【发布时间】:2017-08-20 16:36:54
【问题描述】:

我正在尝试在我的 PostgresQL 数据库的新表中批量创建大量记录。

表上的主键是一个名为 id 的 AutoField。

从 Django 1.10(我正在使用)开始,这应该可以在 Postgres 中使用:https://docs.djangoproject.com/en/1.10/ref/models/querysets/#bulk-create

但是,bulk_create 失败并出现以下错误。
django.db.utils.IntegrityError: null value in column "id" violates not-null constraint

这表明id 字段没有自动分配值。

有谁知道如何解决这个问题?

【问题讨论】:

  • 你能告诉我们你的模型和bulk_create电话,以防万一吗?
  • 当然!模型在这里:github.com/uclapi/uclapi/compare/… 批量创建在这里:github.com/uclapi/uclapi/compare/… 忽略我们这样做的原因,缺乏测试等:P
  • 我们一直在考虑的另一个选项是使用 uuids 作为主键,并将它们作为bulk_create的一部分生成

标签: python django postgresql


【解决方案1】:

所以这不是一个真正的答案,但它对我们有用:

我们将显式的 id AutoField 替换为隐式的(即删除该行,让 Django 自己生成)。

然后它起作用了!

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 2014-10-11
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2012-06-27
    相关资源
    最近更新 更多