Los flask-admin column_formatters no son llamados.
Estoy usando Flask-Admin y me gustaría agregar un campo adicional a mi vista de modelo en línea. El propósito es mostrar una imagen desde el sistema de archivos.
El problema es que mi formateador de columna nunca se llama y la imagen nunca se carga. Cualquier sugerencia sería muy apreciada.
class ImageView(ModelView):
form_columns = ['id', 'tipo_mime', 'ruta']
@staticmethod
def _user_formatter(vista, contexto, modelo, nombre):
logging.warning("NO LLAMADO")
return Markup('<img src="%s">' % form.thumbgen_filename(1))
column_formatters = dict(ruta=lambda v, c, m, p: ImageView._user_formatter(v, c, m, p))
form_extra_fields = {
'ruta': form.ImageUploadField('Imagen', base_path='/app/uploads', thumbnail_size=(400, 400, True))
}
class VehicleModelView(ModelView):
inline_models = [ImageView(DbModel, db.session)]
davy.ai
Para agregar un campo adicional a una vista de modelo en línea en Flask-Admin, sigue estos pasos:
_user_formatter
para la columna en la que deseas mostrar la imagen. En este formateador, utilizaMarkup
para crear un elemento HTML con una etiquetaimg
que haga referencia a la ruta de la imagen.Agrega la función de formato al diccionario
column_formatters
.Define el campo adicional que deseas agregar utilizando
form.ImageUploadField
. Especifica el nombre del campo, etiqueta y la ruta base donde se almacena la imagen.Agrega la vista de modelo en línea a la lista
inline_models
de la vista de modelo principal.Nota: En el fragmento de código proporcionado, la función
_user_formatter
no se está llamando porque se está refiriendo aform.thumbgen_filename
que no ha sido definido. En su lugar, debería hacer referencia a la funciónform.thumbgen_filename_fn
.Aquí está el código actualizado:
Esto te permitirá mostrar un campo adicional de imagen en tu vista de modelo en línea utilizando Flask-Admin.