减少 Flask-Admin 中列的大小

Reducing size of columns in Flask-Admin

有没有办法限制 ModelView 列的大小 (length/width)?我使用的是 WYSIWYG 编辑器,这会创建非常长的文本,因此使 ModelView 的列非常长。

这是它的外观图片。查看右侧最后一列。它甚至比屏幕截图可以处理的还要长。

实现此目的的一种方法是覆盖相关列的 css 样式。在 Flask-admin list.html 模板中,您可以找到以下用于创建列的代码:

{% for c, name in list_columns %}
<td class="col-{{c}}">
  {% if admin_view.is_editable(c) %}
    {% set form = list_forms[get_pk_value(row)] %}
    {% if form.csrf_token %}
      {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c), csrf=form.csrf_token._value()) }}
    {% else %}
      {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c)) }}
    {% endif %}
  {% else %}
    {{ get_value(row, c) }}
  {% endif %}
</td>
{% endfor %}

例如对于第 2 列,您可以将最大宽度 属性 添加到 css class col-2 以限制其宽度。

不显示列(通过排除):

class MyView(ModelView):

    column_exclude_list = ('description')

不显示列(通过包含):

class MyView(ModelView):

    column_list = ('rating', 'category_id', 'year', 'stock', 'image')   

重新格式化列:

class MyView(ModelView):

     def _description_formatter(view, context, model, name):
        # Format your string here e.g show first 20 characters
        # can return any valid HTML e.g. a link to another view to show the detail or a popup window
        return model.description[:20]

    column_formatters = {
        'description': _description_formatter,
    }