2011-06-20 9 views
9

Estoy usando CherryPy, plantillas de Mako y SQLAlchemy en una aplicación web. Vengo de un fondo de Ruby on Rails y estoy tratando de configurar algunos datos de validación para mis modelos. No puedo encontrar la mejor manera de asegurar, digamos, que un campo 'nombre' tiene un valor cuando otro campo tiene un valor. Intenté usar SAValidation, pero me permitió crear nuevas filas donde una columna requerida estaba en blanco, incluso cuando usé validates_presence_of en la columna. He estado buscando en WTForms pero parece implicar una gran cantidad de código duplicado. Ya tengo mi clase de modelo configurada con las columnas en la tabla, ¿por qué tengo que repetir todas esas columnas nuevamente para decir "oye esto uno necesita un valor "? Vengo de la mentalidad de "skinny controller, fat model" y he estado buscando métodos tipo Rails en mi modelo como validates_presence_of o validates_length_of. ¿Cómo debo proceder para validar los datos que recibe mi modelo y asegurar que Session.add/Session.merge fallan cuando las validaciones fallan?validación de datos para modelos declarativos SQLAlchemy

Respuesta

-4

Terminé usando WTForms después de todo.

+0

¿Cómo se solucionó la duplicación de código? ¿Puedes explicarme un poco cómo lo estás usando? También soy un desarrollador de rails, pero estoy buscando desarrollar una aplicación con matraz + sqlalchemy ... He visto WTForms, pero me parece un poco extraño que siempre esté almacenando validación en la vista ... mientras se siente más válido (y más seco) para almacenarlo en el modelo. – jbwiv

10

Eche un vistazo a la documentación para agregar validation methods. Simplemente podría agregar un método de "actualización" que tome el díc POST, se asegure de que las claves requeridas estén presentes, y use los validadores decorados para establecer los valores (provocando un error si algo falla).

+1

Los métodos de validación solo funcionan para un campo a la vez. Obviamente, significa validación que depende de la relación entre los campos. –

2

Escribí SAValidation con el propósito específico de evitar la duplicación de código cuando se trata de validar los datos del modelo. Funciona bien para nosotros, al menos para nuestros casos de uso.

En nuestras pruebas, tenemos examples of the model's setup y pruebas para mostrar los trabajos de validación.

Cuestiones relacionadas