减少Flask-Admin中列的大小

时间:2016-12-10 04:55:39

标签: python twitter-bootstrap flask flask-sqlalchemy flask-admin

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

这是它的样子。查看最后一列的右侧。它比截图可以处理的时间更长。

enter image description here

2 个答案:

答案 0 :(得分:7)

不显示列(排除):

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,
    }

答案 1 :(得分:0)

执行此操作的方法可能是覆盖相关列的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类col-2添加max-width属性以限制其宽度。