如何在Django通用视图中正确验证用户条目

如何在Django通用视图中正确验证用户条目,django,django-generic-views,django-validation,Django,Django Generic Views,Django Validation,在我的Django应用程序中,我试图验证用户输入的表单字段值。我试图在Django genericUpdateView中进行验证(如下所述)。extant字段存储事务文档的各种状态。状态的更改发生在更新时(由用户手动输入状态代码或基于交易的特定阶段或类似情况-此处不重要) 重要的是,在save上,文档的状态需要更改。由于有许多状态,每个状态都有一个数值。无论何时手动输入状态,都需要检查当前状态值是否小于输入值。如果不是,则用户应收到一条错误消息 My views.py如下所示: class Pr

在我的Django应用程序中,我试图验证用户输入的表单字段值。我试图在Django generic
UpdateView
中进行验证(如下所述)。extant字段存储事务文档的各种状态。状态的更改发生在更新时(由用户手动输入状态代码或基于交易的特定阶段或类似情况-此处不重要)

重要的是,在
save
上,文档的状态需要更改。由于有许多状态,每个状态都有一个数值。无论何时手动输入状态,都需要检查当前状态值是否小于输入值。如果不是,则用户应收到一条错误消息

My views.py如下所示:

class ProdDocView(UpdateView, ...):
    template_name = ...
    model = ProdLine
    form_class = ProdLineForm
    ...

    def form_valid(self, form):
        tmp_status = ProdLine.objects.get(prod_doc_id=self.object.pk).prod_doc_status
        new_status_entered = form.cleaned_data['prod_doc_status']

        if tmp_status == new_status_entered:    # This is just to check error capture
            # raise ValidationError('Wrong status code entered!!')
            return super(ProdDocView, self).form_invalid(form)
        else:
            form.instance.approved_by = self.request.user.   # This is to save user field on successful save
        return super().form_valid(form)
现在发生的是,错误捕获发生了-即,如果先前状态与输入的状态匹配,则保存失败但不显示任何错误消息。如果状态不相等,文档将成功保存

如您所见,
raisevalidationerror('error status code entered!!')
code行已被注释掉,因为否则表单将失败,错误将显示在浏览器中(并显示错误消息)

我的问题是:
如何向前端用户显示错误?

为了结束这个问题,我复制了上面的评论:

我只需要添加以下内容:

form.add\u错误('prod\u doc\u status','error status code entered!!')


这样,字段就会显示错误消息。

您应该在
clean
方法中添加验证,如中所示。此外,在模板中,确保已添加显示验证错误的代码。如何获取正在编辑的对象的状态值,以便与输入的新值进行比较?已解决此问题。我只需要添加
表单。添加错误('prod\u doc\u status','输入了错误的状态代码!!')
。该字段显示错误消息。