我使用的TurboGears 2.3和與formencode驗證形式工作,需要一些指導的TurboGears 2.3分兩步@validte
我有覆蓋2個不同的對象的形式。他們是幾乎相同,但也有一些差異 當我提交我的形式,我想驗證兩件事情
- 一些基本數據
- 一些具體數據,特定對象
這裏是我的模式:
class basicQuestionSchema(Schema):
questionType = validators.OneOf(['selectQuestion', 'yesNoQuestion', 'amountQuestion'])
allow_extra_fields = True
class amount_or_yes_no_question_Schema(Schema):
questionText = validators.NotEmpty()
product_id_radio = object_exist_by_id(entity=Product, not_empty=True)
allow_extra_fields = True
class selectQuestionSchema(Schema):
questionText = validators.NotEmpty()
product_ids = validators.NotEmpty()
allow_extra_fields = True
這裏是我的控制器的方法:
@expose()
@validate(validators=basicQuestionSchema(), error_handler=questionEditError)
def saveQuestion(self,**kw):
type = kw['questionType']
if type == 'selectQuestion':
self.save_select_question(**kw)
else:
self.save_amount_or_yes_no_question(**kw)
@validate(validators=selectQuestionSchema(),error_handler=questionEditError)
def save_select_question(self,**kw):
...
Do stuff
...
@validate(validators=amount_or_yes_no_question_Schema(),error_handler=questionEditError)
def save_amount_or_yes_no_question(self,**kw):
...
Do other stuff
...
我想要做的是驗證兩次,以不同的模式。這是行不通的,因爲只驗證了第一個@validate,另一個不是(可能被忽略)
那麼,我錯了什麼?
感謝您的幫助
太好了,謝謝你的工作示例 – 2014-12-01 12:48:55