显然,当您通过表单保存数据时,您可以通过它的 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
现在我只需要在模板上找出一些列表理解来显示错误!