首页 > 解决方案 > 在 Django 中更新表单时如何更改状态?

问题描述

我正在使用 Django 表单更新,但我面临一个小问题,我在表单更新中有 3 个字段,,,,,name现在image如果status用户在表单中上传图像,那么状态应该在我的数据库中自动更改。

这是我的forms.py文件...

class UpdateForm(forms.ModelForm):
   model = Product
   fields = ['name', 'image', 'status']

这是我的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)

默认status0我的数据库中,如果用户上传的图片status应该1在我的数据库中,请让我指导我该怎么做。

标签: pythondjangodjango-modelsdjango-formsdjango-templates

解决方案


最好的方法是覆盖save()表单类的方法。一个可能的实现可能是:

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()

        return m

推荐阅读