我正在使用 TurboGears 2.3 并使用 formencode 验证表单,需要一些指导
我有一个涵盖 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 被验证,而另一个没有(可能被忽略)
那么,我做错了什么?
谢谢您的帮助