当我在混音器中使用它时
form._errors[forms.forms.NON_FIELD_ERRORS]=ErrorList(["age must be positive"])
在我的UpdateView中,它工作正常,消息以红色弹出。但在我看来,什么都没有出现
我怎样才能做到这一点? 这是我的mixin.py:
class AgePositiveMixin(object):
def form_valid(self, form):
print(form.instance.age)
if form.instance.age>0:
return super(AgePositiveMixin, self).form_valid(form)
else:
form._errors[forms.forms.NON_FIELD_ERRORS]=ErrorList(["Age must be positive"])
# raise forms.ValidationError('Age must be positive')
return self.form_invalid(form)
一个
CreateView
没有一个instance
,因为在构造表单时对象还不存在。您可以执行以下操作,而不是form.instance
:年龄是否应该在任何地方都是积极的(在Django管理中,面向用户的表单中)?如果是这样,一个^{} 将为您进行验证
一般来说,我喜欢让验证尽可能靠近数据库。如果
PositiveSmallIntegerField
不适合您的用例,我建议使用validator。使用验证器,Django将在管理员、模型表单和其他任何地方为您执行验证。这对一致性很好编辑:执行验证的另一种方法是在表单类中执行验证:
请查看Django的Form and field validation文档,以了解有关这方面的更多信息
相关问题 更多 >
编程相关推荐