我正在使用Django表单更新,但面临一个小问题,我在表单更新中有3个字段,name
,image
,status
,现在,如果用户上传形式的图像,则status
会在数据库中自动更改为1
。
但是现在,如果我使用图像的checkbox
清除表单,则应在数据库中status
更新此0
这是我的forms.py
文件...
class UpdateForm(forms.ModelForm):
...
def save(self, commit=True):
instance = super(UpdateForm, self).save(commit=False)
# Set status if saving picture
if instance.image:
instance.status = 1
if commit:
instance.save()
这是我的views.py
文件...
def myview(request, id):
datas=Product.objects..get(pk=id)
form = UpdateForm(instance=datas)
if request.method === 'POST'
form = UpdateForm(request.POST or None, request.FILES or None, instance=datas)
if form.is_valid():
edit = form.save(commit=False)
edit.save()
return HttpResponse('Success')
else:
return HttpResponse('Fail')
template_name='test.html'
context={'datas':datas}
return render(request, template_name, context)
这是我的site.html
文件...
<form method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
<a href="/media/{{datas.image}}"/>{{datas.image}}</a>
<input type="checkbox" name="image-clear" id="image-clear_id"/> Clear
<input type="submit" value="submit">
当我更新此表单时,它将在状态字段中更新1
,但是如果我从form
中清除,则status
应该是我数据库中的0
答案 0 :(得分:0)
当您通过取消选中复选框来运行代码时,将跳过以下行:
if instance.image:
instance.status = 1 # This will be skipped since instance.image is now False
尝试为instance.image的条件为false时添加操作。
if instance.image:
instance.status = 1
else:
instance.status = 0
您当然可以对其进行重构,以使其更加优美,但是清楚地表明了逻辑。