自动将值保存在UpdateView Django

时间:2019-03-06 00:57:06

标签: django methods django-models django-forms django-views

我是Django的新手,我正在学习有关视图和方法以及它们如何工作的信息,尤其是关于这个问题。问题是,我想知道如何在UpdateView中更新对象后自动在模型中保存字段的值,例如,当我更新对象时,在这种情况下,我可以分配一个人来执行的报告我想保存一个显示“状态”的模型值,并保存“已分配”或类似的值,以了解报告是否已分配。我知道有一些方法,也许其中一种方法可以通过覆盖该类来完成,但是我不知道如何应用它或使用哪种方法。

为获得帮助,这是我正在使用的UpdateViews的简单类:

class reporteupdate(UpdateView):
model = reporte_fallo
form_class = ReporteAsignar
template_name = 'formulario/jefe_asignar.html'
success_url = reverse_lazy('formulario:reporte_listar_jefe')

,我要为其分配值的模型字段称为状态

我一直在等待您的帮助,因为我对此表示怀疑。谢谢!!!

2 个答案:

答案 0 :(得分:0)

在后方法中创建查询字典副本后,该查询字典将可以更改,因此您可以执行以下操作:-

class SomeUpdateView(UpdateView):
    model=your model
    form_class=you form


    def post(self, request, **kwargs):
    request.POST = request.POST.copy()
    request.POST['status'] = 'Assigned'
    return super(SomeUpdateView, self).post(request, **kwargs)

答案 1 :(得分:0)

通过在reporteupdate视图中覆盖form_valid()方法,您可以在成功验证表单后设置状态标志:

class reporteupdate(UpdateView):

    ...

    def form_valid(self, form):
        # Call super() to save the model and return the success url
        resp = super().form_valid(form)

        # Set your status flag
        self.object.status = 'assigned'  
        self.object.save()

        return resp