【问题标题】:duplicate key value violates unique constraint .... Django error重复键值违反唯一约束.... Django 错误
【发布时间】:2018-08-26 22:42:27
【问题描述】:

我正在尝试对模型进行“获取”查询。我用来查询模型的参数是外键(两者)。 模型看起来像这样......

class model_1(models.Model):
   field_1  =  models.ForeignKey(model_2)
   field_2  =  models.CharField(max_length = 512)
   field_3 = models.ForeignKey(model_3)

   class Meta:
      unique_together = ("field_1", "field_3")

我正在尝试运行此查询

m = model_1.objects.get(field_1 = 'something', field_2 = 'something_1')

但它会抛出错误 duplicate key value violates unique constraint... 以及 DETAIL: Key (model_1_id, model_3_id)=(1339, 5) already exists

当我尝试读取条目时,我无法理解为什么错误出现在重复键上。如果我试图在其中插入一条新记录并且有冲突的键,这对我来说是有意义的。

谢谢!

【问题讨论】:

  • 我认为 django 在调用 get() 查询方法时不会抛出一些异常

标签: python django model key unique


【解决方案1】:

您正尝试在 (field_1, field_3) 上创建一个已包含重复数据的唯一索引。 请检查您的数据,必须有 2 行的 field_1 和 field_3 的值相同,即 (1339, 5),这违反了唯一性约束。

【讨论】:

  • 我做到了!数据库中没有重复的条目。
  • 我删除了模型中的所有行,只创建了一个与查询匹配的行。它仍然会引发相同的错误。令我惊讶的是get 查询抛出重复键值错误。这是一个搜索查询,而不是一个插入查询。
  • get 查询不会抛出重复键值错误。您可能会在代码中插入相同的键值对。请仔细检查。当您违反某些限制时,就会发生此类错误。
猜你喜欢
  • 2021-10-23
  • 2016-06-12
  • 2016-11-27
  • 2018-03-14
  • 2012-12-31
  • 2020-02-15
  • 2016-07-27
  • 1970-01-01
  • 2011-06-26
相关资源
最近更新 更多