2012-08-04 2 views
1

데이터베이스 수준에서 SQLFORM 필드에 유효성 검사를 추가하는 방법을 알고 있습니다. 그러나 개인 양식의 수준에서이 작업을 수행 할 수는 없습니다. 이상적으로 저는 기존 SQLFORM을 가지고 다음과 같이 말할 수 있습니다 :web2py 양식에 추가 검증 요구 사항을 추가 하시겠습니까?

form.field.requires = # some extra validator 

이 같은 것이 있습니까?

답변

2

먼저 web2py 유효성 검사기는 테이블 정의의 일부로 지정되어 있어도 데이터베이스의 수준에 있지 않습니다. 항상 양식 수준에서 적용됩니다.

SQLFORM 모두가 걸릴 양식 필드를 구축하기 위해 사용하는 INPUT(), SELECT()TEXTAREA() 헬퍼는 하나의 검증 또는 유효성 검사기의 목록이 될 수있는 속성을 "이 필요합니다." SQLFORM은 양식을 만들 때 데이터베이스 테이블 필드의 유효성 검사기를 연결된 양식 위젯에 자동으로 복사합니다.

이 경우
def myform(): 
    db.mytable.myfield.requires = IS_IN_SET(['a', 'b', 'c']) 
    form = SQLFORM(db.mytable).process() 
    return dict(form=form) 

이 SQLFORM 연관된 "myfield"위젯 db.mytable.myfield에서 유효성 검사기를 복사합니다 : 그래서, 가장 쉬운 방법은 바로 SQLFORM를 작성하기 전에 데이터베이스 테이블 필드에 대한 검증을 지정하는 것입니다 의 형태의.

폼이 생성 된 후에 또한 위젯 직접 검사기를 추가 할 수있다 (그러나이 처리되기 전에)

form.element('input[name=myfield]')['requires'] = IS_IN_SET(['a', 'b', 'c']) 
: 필드 위젯 액세스 할

form = SQLFORM(db.mytable) 
form.custom.widget.myfield['requires'] = IS_IN_SET(['a', 'b', 'c']) 
form.process() 

다른 방법을

관련 문제