【问题标题】:How to change Status when update form in Django?在 Django 中更新表单时如何更改状态?
【发布时间】:2020-09-18 09:03:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django django-models django-forms django-templates


    【解决方案1】:

    最好的方法是覆盖表单类的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
    

    【讨论】:

    • 我的views.py文件的代码是什么,是我写的保存
    • 能否写出views.pyforms.py文件的完整代码...
    • 您应该更改视图中的任何内容,只需将此方法添加到您的表单类定义中。
    • 如果我想清除以前的图像,我会怎么做,当我清除以前的图像时,状态应该是0
    • 在您覆盖的保存方法中,您可以检查图像是否存在,然后相应地设置状态。
    猜你喜欢
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2016-05-05
    • 2012-02-28
    • 2018-02-19
    相关资源
    最近更新 更多