Django重复键值违反了唯一约束错误模型形式

时间:2015-10-25 19:07:44

标签: django postgresql django-forms modelform

我在PostgreSQL上有一个遗留数据库,带有一个简单的产品表,其中包含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 个答案:

答案 0 :(得分:6)

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