【发布时间】:2013-08-28 08:14:59
【问题描述】:
显然,当您通过表单保存数据时,您可以通过它的 clean 方法运行验证,但是如果您想在每次查看数据时重新验证该数据,您可以再次运行表单的 clean 方法吗?
我在想这个观点应该是这样的;
def detail(request, person_id=None):
"""
Renders an individual person
@param employer_id: The id of employer to view
@param request: HttpRequest
@return: HttpResponse
"""
person = get_object_or_404(People, pk=person_id)
validation_form = AddForm(instance=person)
is_valid = validate_person(validation_form)
return render_to_response(
'person/detail.html',
{
'is_valid': is_valid,
},
context_instance=RequestContext(request))
但是validate_person() 的“正确”方式是什么?
解决方案
我发现一个对象有一个.__dict__ 方法,所以我的解决方案是;
form = AddForm(person.__dict__)
is_valid, errors = validate_person(form)
那么我的辅助函数可以返回表单是否有效,如果有错误;
def validate_person(form):
"""
Validate that the data stored for the person passes validation.
@param person: Person object
@param form: Form
@return: Boolean
"""
if form.is_valid():
return True, None
else:
return False, form.errors
现在我只需要弄清楚模板上的一些列表理解来显示错误!
【问题讨论】:
-
you can have a look at the doc 查看验证器如何为每个字段工作
标签: python django validation