python - update - Frasco valida decorador de múltiples campos simultáneamente.
flask-sqlalchemy install (1)
Ordene los campos en el orden en que fueron definidos en el modelo. Luego verifique si el último campo es el que está siendo validado. De lo contrario, simplemente devuelve el valor sin marcar. Si el validador está validando uno de los campos anteriores, algunos de ellos aún no estarán configurados.
@validates(''field_one'', ''field_two'')
def validates_fields(self, key, value):
if key == ''field_two'':
assert self.field_one != value
return value
Vea este ejemplo .
He estado utilizando el decorador @validates en sqlalchemy.orm del matraz para validar campos, y todo ha ido bien siempre y cuando todos los campos sean independientes entre sí, como por ejemplo:
@validates(''field_one'')
def validates_field_one(self, key, value):
#field one validation
@validates(''field_two'')
def validates_field_two(self, key, value):
#field two validation
Sin embargo, ahora necesito hacer una validación que requerirá acceso a field_one y field_two simultáneamente. Parece que validates acepta múltiples argumentos para el decorador de validaciones, sin embargo, simplemente ejecutará la función de validación una vez para cada argumento, como tal:
@validates(''field_one'', ''field_two'')
def validates_fields(self, keys, values):
#field validation
Da como resultado un flujo de trabajo de validar field_one y luego validar field_two. Sin embargo, me gustaría validar ambos al mismo tiempo (un ejemplo trivial sería afirmar que el valor de field_one no es el valor de field_two, un ejemplo del cual sería deshabilitar los auto-bucles en una gráfica donde field_one y field_two refiérase a los nodos y está realizando la validación en un borde). ¿Cómo sería la mejor manera de hacerlo?