如何正确验证Django泛型视图中的用户条目



在我的Django应用程序中,我试图验证用户输入的表单字段值。我正在尝试在Django通用UpdateView中进行验证(如下所述(。现存字段存储交易文档的各种状态。状态的更改发生在更新时(通过用户手动输入状态代码或基于事务的某个阶段等-在此处不重要(。

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

我的观点.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)

现在发生的是,错误捕获发生了——即,如果以前的状态与输入的状态匹配,则保存失败但不会显示任何错误消息。如果状态不相等,则文档保存成功。

正如您所看到的,raise ValidationError('Wrong status code entered!!')代码行已被注释掉,因为否则表单将失败,错误将显示在浏览器中(并带有错误消息(。

我的问题是:

如何向前端用户显示错误

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

我只需要添加以下内容:

form.add_error('prod_doc_status', 'Wrong status code entered!!')

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

最新更新