Django 1.6:ModelForm只编辑INSERTING新记录而不是UPDATING

时间:2014-02-20 19:27:09

标签: python django modelform

我正在尝试创建一个执行简单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文档。我不确定出了什么问题。我是初学者,所以请帮助!感谢这方面的任何帮助

0 个答案:

没有答案