проверка данных для декларативных моделей SQLAlchemy - PullRequest
13 голосов
/ 20 июня 2011

Я использую CherryPy, шаблоны Mako и SQLAlchemy в веб-приложении. Я работаю в Ruby on Rails и пытаюсь настроить проверку данных для своих моделей. Я не могу найти лучший способ убедиться, что, скажем, поле 'name' имеет значение, когда какое-то другое поле имеет значение. Я попытался использовать SAValidation , но это позволило мне создать новые строки, где требуемый столбец был пустым, даже когда я использовал validates_presence_of для столбца. Я смотрел на WTForms , но, похоже, в нем много дублированного кода - у меня уже настроен класс модели со столбцами в таблице, почему мне нужно повторить все эти столбцы снова просто сказать "эй, это нужно ценностью"? Я исходил из мышления " тощий контроллер, толстая модель " и искал в своей модели методы, похожие на Rails, такие как validates_presence_of или validates_length_of. Как мне пройти проверку данных, которые получает моя модель, и гарантировать, что Session.add / Session.merge не удастся, если проверки не пройдут?

Ответы [ 3 ]

14 голосов
/ 20 июня 2011

Ознакомьтесь с документацией для добавления методов проверки .Вы можете просто добавить метод «update», который принимает DOST-диктант, проверяет наличие необходимых ключей и использует декорированные валидаторы для установки значений (при возникновении ошибки, если что-то не так).

2 голосов
/ 14 декабря 2011

Я написал SAValidation с конкретной целью избежать дублирования кода, когда дело доходит до проверки данных модели.Это хорошо работает для нас, по крайней мере, для наших случаев использования.

В наших тестах у нас есть примеров настройки модели и тесты, чтобы показать, что валидация работает.

0 голосов
/ 01 июля 2011

Я все-таки использовал WTForms.

...