Flask-admin - ModelView 中同一列的多种格式
Flask-admin - multiple formats of same column in ModelView
我正在尝试修改此 Flask-admin 示例代码 http://examples.flask-admin.org/forms/admin/image/ 以将图像的缩略图和文件路径的原始文本显示为两个单独的列。这基本上与我在自己的项目中试图解决的问题相同。我可以让它只显示其中一个,但不能同时显示两者。
示例源码中的相关class为:
class ImageView(sqla.ModelView):
def _list_thumbnail(view, context, model, name):
if not model.path:
return ''
return Markup('<img src="%s">' % url_for('static', filename=form.thumbgen_filename(model.path)))
column_formatters = {
'path': _list_thumbnail
}
我的问题是 ModelView class 包含要显示的列,通过在 SQAlchemy 模型中按名称引用它们(例如 'name' 或 'path')。如果我希望它同时具有路径和缩略图,那么我需要包含列 'path' 两次。但是我不能对每个 'path' 列应用不同的格式化函数。所以我只能有两个缩略图列或两个文本路径列。
我试图通过用 column_labels
不同地标记两个 'path' 列来欺骗它,但这是一个字典对象而不是列表,所以你不能再次区分两者。
(完整来源:https://github.com/flask-admin/flask-admin/blob/master/examples/forms/app.py)
你很接近。在视图的 column_list
属性 中定义一个 "dummy" 列,通过 column_label
属性 给它一个漂亮的标签,现在你可以使用 "dummy" column_formatters
属性.
中的列
例如:
class ImageView(sqla.ModelView):
# Add all your visible columns here include a "dummy" column - in this instance 'raw_path'
column_list = ('path', 'raw_path')
# Define label for dummy column
column_labels = {
'raw_path': 'Full Path'
}
def _list_thumbnail(view, context, model, name):
if not model.path:
return ''
return Markup('<img src="%s">' % url_for('static', filename=form.thumbgen_filename(model.path)))
def _list_raw_path(view, context, model, name):
if not model.path:
return ''
return Markup('<p>{path}</p>'.format(path=model.path))
column_formatters = {
'path': _list_thumbnail
'raw_path': _list_raw_path
}
我正在尝试修改此 Flask-admin 示例代码 http://examples.flask-admin.org/forms/admin/image/ 以将图像的缩略图和文件路径的原始文本显示为两个单独的列。这基本上与我在自己的项目中试图解决的问题相同。我可以让它只显示其中一个,但不能同时显示两者。
示例源码中的相关class为:
class ImageView(sqla.ModelView):
def _list_thumbnail(view, context, model, name):
if not model.path:
return ''
return Markup('<img src="%s">' % url_for('static', filename=form.thumbgen_filename(model.path)))
column_formatters = {
'path': _list_thumbnail
}
我的问题是 ModelView class 包含要显示的列,通过在 SQAlchemy 模型中按名称引用它们(例如 'name' 或 'path')。如果我希望它同时具有路径和缩略图,那么我需要包含列 'path' 两次。但是我不能对每个 'path' 列应用不同的格式化函数。所以我只能有两个缩略图列或两个文本路径列。
我试图通过用 column_labels
不同地标记两个 'path' 列来欺骗它,但这是一个字典对象而不是列表,所以你不能再次区分两者。
(完整来源:https://github.com/flask-admin/flask-admin/blob/master/examples/forms/app.py)
你很接近。在视图的 column_list
属性 中定义一个 "dummy" 列,通过 column_label
属性 给它一个漂亮的标签,现在你可以使用 "dummy" column_formatters
属性.
例如:
class ImageView(sqla.ModelView):
# Add all your visible columns here include a "dummy" column - in this instance 'raw_path'
column_list = ('path', 'raw_path')
# Define label for dummy column
column_labels = {
'raw_path': 'Full Path'
}
def _list_thumbnail(view, context, model, name):
if not model.path:
return ''
return Markup('<img src="%s">' % url_for('static', filename=form.thumbgen_filename(model.path)))
def _list_raw_path(view, context, model, name):
if not model.path:
return ''
return Markup('<p>{path}</p>'.format(path=model.path))
column_formatters = {
'path': _list_thumbnail
'raw_path': _list_raw_path
}