我正在尝试创建一个执行简单INSERT / UPDATE函数的表单。
这是模型
class Item(models.Model):
item = models.CharField(max_length=200, unique=True)
def __unicode__(self):
return self.item
的ModelForm
class ItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ['item']
def clean_item(self):
item_data = self.cleaned_data['item'].strip()
if (item_data == ''):
raise ValidationError("Cannot be blank")
if (Item.objects.filter(item=item_data).exists()):
raise ValidationError("Item already exists")
return item_data
查看
def ItemEdit(request, itemid):
olditem = Item.objects.get(pk=itemid)
if request.method == 'POST':
f = ItemForm(request.POST, instance=olditem)
if f.is_valid():
item = f.cleaned_data['item']
new = f.save()
return HttpResponseRedirect('/')
else:
f = ItemForm(instance=olditem)
return render(request, 'view.html', {'form': f})
现在,当我访问表单时,我可以看到预先填充了所需项目的表单。但是,当我编辑项目并提交表单而不是UPDATING时,它会创建一个新记录(INSERT)。即使在我使用了
之后f = ItemForm(request.POST,instance=olditem)
它不会更新,仍然会创建一个条目。我试过用
保存f.save(commit=false)
f.save(force_update=True)
没有任何效果!我看过不同的教程和django 1.6文档。我不确定出了什么问题。我是初学者,所以请帮助!感谢这方面的任何帮助