Django 重复键值违反唯一约束错误模型表单

Posted

技术标签:

【中文标题】Django 重复键值违反唯一约束错误模型表单【英文标题】:Django duplicate key value violates unique constraint error model form 【发布时间】:2016-01-24 20:22:21 【问题描述】:

我在 PostgreSQL 上有一个旧数据库,其中包含一个简单的 products 表,其中包含 2 列(productid、productname)和 70 个产品。我正在尝试开始使用 Django 作为前端,并且我有如下模型和模型表单。保存过程失败,出现以下错误。

duplicate key value violates unique constraint "productidentifier"
DETAIL:  Key (productid)=(4) already exists.

任何人都可以帮助纠正错误。我已在 Postgres 表上确认索引获取序列设置正确,预期值应为 72。请参阅下面的模型、表单和视图。

#models.py
class Products(models.Model):
    productid = models.AutoField(primary_key=True)
    productname = models.TextField(verbose_name='Product Name')

    class Meta:
        managed = False
#Views.py
def new_product(request):
    if request.method == 'POST':
        form= forms.EditProductForm(request.POST)
        if form.is_valid():
            product = form.save()
            return redirect('views.full_product_list')   
    else:
        form = forms.EditProductForm()
        return render(request, 'edit_product.html', 'form': form)

#forms.py
class EditProductForm(forms.ModelForm):
    productname = forms.CharField(widget=forms.TextInput(attrs='class':'form-control'))

    class Meta:
        model = models.Products
        fields = ('productname')

【问题讨论】:

【参考方案1】:

您的自动字段序列可能存在一些问题。你可以使用./manage.py sqlsequencereset 来解决这个问题。它将生成 SQL 查询以修复您的表上的序列。

【讨论】:

以上是关于Django 重复键值违反唯一约束错误模型表单的主要内容,如果未能解决你的问题,请参考以下文章

django update_or_create 得到“重复键值违反唯一约束”

django:IntegrityError:重复键值违反唯一约束

Golang:重复键值违反唯一约束

Postrgersql+Django:NULL值导致IntegrityError:重复键值违反唯一约束

Django Rest Framework:重复键值违反唯一约束

django + sweetpie:我如何发布以替换数据而不得到“重复键值违反唯一约束”