我想通过Django中的表单更新对象,但在视图中执行form.save()
之前,我想对数据做一些条件。
例如:
ire = get_object_or_404(Ire, id_IRE=pk)
if request.method == 'POST':
form = IreForm(request.POST or None, instance=ire)
if form.is_valid():
if ire.get_att1()==form.cleaned_data.get('att1') and ire.get_att2()==form.cleaned_data.get('att2'):
form.save(update_fields=['type']) #just update the field type
else:
form.save() #create a new object
在我看来,只有第一个条件有效,但是当我以表格的形式更改att1或att2时,则不会做任何更改。
在保存之前,请帮助我如何做条件!
答案 0 :(得分:0)
谢谢您,我找到了一种解决方案,该解决方案存储了要执行更新操作之前要更新的对象的值:
ire = get_object_or_404(Ire, id_IRE=pk)
**ire_att1=ire.get_att1()**
**ire_att2=ire.get_att2()**
**ire_type=ire.get_type()**
if request.method == 'POST':
form = IreForm(request.POST or None, instance=ire)
if form.is_valid():
if **ire_att1**==form.cleaned_data.get('att1') and **ire_att2**==form.cleaned_data.get('att2'):
Ire.objects.filter(id_IRE=pk).update(type=form.cleaned_data.get('type'))
else:
form.save()
这是我解决问题的方法,因为我发现在调用表单模型之后,对象的值与输入的内容同时改变,甚至在调用form.save之前也是如此