2012-10-18 89 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') 

我希望用戶能夠在註冊過程中將自己標識爲代理。

用戶註冊表單現在顯示允許代理選擇的收存箱,但在開始時包含空白選項。由於某些原因,這在我們的系統中是不能接受的。

在研究了驗證器的源代碼之後,我發現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) 
+2

它看起來像你提出並回答你自己的問題,但你應該提交你的解決方案作爲答案,然後接受它。 – User

回答

2

你的問題還不清楚,但如果你問,如果zero論點IS_IN_DB是爲目的,它是。該web2py manual說,在IS_IN_SET

併爲IS_IN_SET手動狀態參數zeroIS_IN_DB作品像zerozero參數是可選的,它決定了默認選擇的選項的文字,這是不被接受的選項IS_IN_SET驗證程序本身。如果你不想要「選擇一個」選項,請設置zero=None