Я использую TurboGears 2,3 и работы по проверке формы с FormEncode и нуждаться в некотором руководствеTurboGears 2,3 @validte в два этапа
У меня есть форма, которая охватывает 2 различных объектов. Они почти то же самое, но с некоторой разницей Когда я представить мою форму, я хочу, чтобы проверить 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, а другой нет (возможно, игнорируется)
Итак, что я делаю неправильно?
Спасибо за помощь
Отлично, и спасибо за рабочий пример –