Edición por lotes en Flask-Admin

Estoy usando Flask-Admin y quiero poder actualizar muchos campos a la vez desde la vista de lista. Parecía que lo que buscaba era una acción personalizada.

Pude hacerlo funcionar, pero sospecho que no de la mejor manera. Me pregunto si podría hacerse más “Frasco” -ily.

Lo que hago ahora, por ejemplo, si estaba actualizando todas las filas de los cars mesa para tener tires = 4 :

  • Una acción personalizada en la clase CarView recostack los identificadores de las filas que se van a modificar, una url de callback de request.referrer y los render_template(mass_update_info.html) , y devuelve render_template(mass_update_info.html) con estos como parámetros.
  • mass_update_info.html es un formulario HTML donde el usuario especifica 1) el campo que desea cambiar y 2) el valor para cambiarlo. En el envío, el formulario realiza un POST a una vista determinada ( do_mass_update ) con estos datos (todo lo demás se pasa como campos ocultos en este formulario).
  • do_mass_update utiliza los datos que se le envían para construir una cadena de consulta SQL, en su totalidad, "UPDATE {} SET {}='{}' WHERE id IN ({})".format(table, column, value, ids) – que se ejecuta a través de db.engine.execute() .
  • El usuario es redirigido a la url de callback.

Me molesta que parezca que no uso ninguno de SQLAlchemy, pero (desde la perspectiva de un novato) todo parece estar basado en los objetos del modelo, por ejemplo, User.query(...) , mientras que solo tengo acceso al modelo / nombre de la tabla como una cadena. ¿Puedo obtener algún tipo de identificador del modelo, pasarlo a través y hacer una búsqueda para recuperarlo en el otro lado?