【问题标题】:django.db.utils.IntegrityError: duplicate key value violates unique constraint, while 2 of 4 rows are differentdjango.db.utils.IntegrityError:重复键值违反唯一约束,而 4 行中有 2 行不同
【发布时间】:2020-01-10 09:17:22
【问题描述】:

我在数据库中有一行:

order_id:    product_type_id:    is_child:    child_type_id:

  1                   2             True           3

我想用这段代码添加一行:

订单 = 1,

product.parent = 2

order_item = OrderItem.objects.create(order=order, product_type=product.parent, 
                                                  child_type_id=None, is_child=False)

但它会引发此错误:

django.db.utils.IntegrityError:重复键值违反唯一约束“order_orderitem_order_id_product_type_id_ee5c1733_uniq” DETAIL: Key (order_id, product_type_id)=(1, 2) 已经存在。

虽然 4 行中有 2 行不同,但为什么我会遇到这个问题?

【问题讨论】:

    标签: python django


    【解决方案1】:

    Django 存在数据复制问题,因此我认为您不能拥有两个具有相同 id 的对象,除非它是外键或 ManyToMany 字段。

    【讨论】:

      【解决方案2】:

      问题在于您的约束,您有 order_id 和 product_type_id 的约束。 删除它并创建一个具有您想要的所有功能的新功能。 比如:(order_item, product_type_id, child_product_type_id, is_child)

      【讨论】:

      • 我有一个标准的 M2M 字段,然后我将其更改为一个带有直通表和 unique_together 约束的 M2M 字段。原来旧的约束仍然卡在数据库表上。
      猜你喜欢
      • 2019-07-22
      • 2018-03-28
      • 2013-10-08
      • 2016-04-14
      • 2018-12-06
      • 2022-11-05
      • 2014-06-19
      • 2021-01-25
      • 1970-01-01
      相关资源
      最近更新 更多