web2py で、「agent_code」というフィールドを追加して、デフォルトの auth_user テーブルを変更したとします。このフィールドには、別のテーブルの値が含まれている必要があります。
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')
ユーザーが登録時にエージェントとして識別できるようにしたい。
ユーザー登録フォームにドロップボックスが表示され、エージェントを選択できるようになりましたが、最初に空白のオプションが含まれています。何らかの理由で、これは私たちのシステムでは受け入れられません。
バリデーターのソースコードを調べたところ、IS_IN_DB バリデーターに「zero」というパラメーターがあることがわかりました。これはデフォルトで '' (空の文字列) に設定されており、ドロップリストに空白のオプションを作成します。
したがって、空白のオプションを削除するには、バリデータを次のように変更します。
IS_IN_DB(db, db.agea.agea_cod,
'%(agea_cod)s - %(agea_name)s',
error_message='Agent not in DB',
zero=None)