2012-10-18 4 views
3

web2py에서 'agent_code'라는 필드를 추가하여 기본 auth_user 테이블을 수정했습니다. 이 필드에는 다른 테이블의 값이 포함되어야합니다.web2py - IS_IN_DB 유효성 검사기에서 공백 옵션을 제거하십시오.

auth_table = db.define_table(
    auth.settings.table_user_name, 
    Field('first_name', length=128, default=''), 
     ...more fields here..., 
    Field('auth_age_cod', length=512,default=None)) 

auth_table.auth_age_cod.requires = \ 
    IS_IN_DB(db, db.agea.agea_cod, 
      '%(agea_cod)s - %(agea_name)s', 
      error_message='Agent not in DB') 

사용자가 등록 중에 에이전트를 자신으로 식별 할 수있게하려고합니다.

사용자 등록 양식에 에이전트 선택을 허용하는 드롭 박스가 표시되지만 시작시 공란 옵션이 포함됩니다. 몇 가지 이유 때문에 Google 시스템에서 허용되지 않습니다.

유효성 검사기의 소스 코드를 조사한 후 IS_IN_DB 유효성 검사기에 '0'이라는 매개 변수가 있음을 발견했습니다. 이것은 기본적으로 ''(빈 문자열)로 설정되고 droplist에 공백 옵션을 작성합니다. 그래서

는 빈 옵션을 제거하여 검증을 변경하려면 :

IS_IN_DB(db, db.agea.agea_cod, 
     '%(agea_cod)s - %(agea_name)s', 
     error_message='Agent not in DB', 
     zero=None) 
+2

과 같이 설정하십시오. 자신의 질문에 답을 얻은 것처럼 보이지만 해결 방법으로 답안을 제출하고 동의해야합니다. – User

답변

2

귀하의 질문은 불분명하지만, IS_IN_DBzero 인수가 그 목적을위한 경우에 당신이 요구하는 경우가있다. web2py manual는 말한다 IS_IN_SET

에서 그리고 IS_IN_SET 수동 상태에 대한 zero 같은 IS_IN_DB 작품의 인수 zero : zero 인수는 선택 사항이며 기본적으로 선택 옵션의 텍스트에 의해 허용되지 않는 옵션을 결정합니다 유효성 검사기 자체는 IS_IN_SET입니다. "하나 선택"옵션을 원하지 않는다면 zero=None

관련 문제