当我尝试更新现有记录时,我收到“值已存在”错误。
示例: 我在数据库中定义了5个产品。现在我要编辑第4条记录。我用pk值调用“product_edit”。现在,我正在更改产品名称字段并保持产品编号字段不变。当我点击提交时,产品编号输入字段上方会显示一条错误消息。 “具有此产品编号的产品已存在”。我怎么能避免这个?
models.py
class Product(models.Model):
productname = models.CharField("Product Name", max_length=200, unique=True)
productnumber = models.CharField("Product Number", max_length=50, unique=True)
def __unicode__(self):
return self.productname
forms.py
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = ['productname', 'productnumber']
views.py
def product_edit(request, pk, template_name='dictionary/prod/prod_add.html'):
product = get_object_or_404(Product, pk=pk)
form = ProductForm(request.POST or None, instance=product)
if form.is_valid():
form.save()
return HttpResponseRedirect('dictionary/prod/prod_list.html')
return render(request, template_name, {'form': form})
urls.py
url(r'^edit/(?P<pk>\d+)$', views.product_edit, name='product_edit'),
答案 0 :(得分:0)
终于开始工作了。在视图中将pk更改为id,创建了一个新的update.html以进行更新。将表单操作url留空,因为它填充并提交到同一视图。