ModelView

sqladmin.models.ModelView 基类:BaseView

用于定义模型的管理行为的基类。

用法

from sqladmin import ModelView
from mymodels import User  # SQLAlchemy 模型

class UserAdmin(ModelView, model=User):
    can_create = True

类属性:

  • name_plural: str ModelView 的复数名称。默认值为模型类名加上 "s"。

  • column_labels: Dict[MODEL_ATTR, str] 列标签映射,用于将列名称映射到新的名称。字典键可以是字符串名称或 SQLAlchemy 列,值是字符串。

    示例:

    class UserAdmin(ModelView, model=User):
        column_labels = {User.mail: "Email"}
  • can_create: bool 创建新模型的权限。默认值为 True

  • can_edit: bool 编辑模型的权限。默认值为 True

  • can_delete: bool 删除模型的权限。默认值为 True

  • can_view_details: bool 查看模型详细信息的权限。默认值为 True

  • column_list: Union[str, Sequence[MODEL_ATTR]] 在列表页面中显示的列。列可以是字符串名称或 SQLAlchemy 列。

    注意: 默认仅显示模型的主键。

    示例:

    class UserAdmin(ModelView, model=User):
        column_list = [User.id, User.name]
  • column_exclude_list: Sequence[MODEL_ATTR] 在列表页面中排除的列。列可以是字符串名称或 SQLAlchemy 列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_exclude_list = [User.id, User.name]
  • column_formatters: Dict[MODEL_ATTR, Callable[[type, Column], Any]] 列表视图列格式化函数字典。列可以是字符串名称或 SQLAlchemy 列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_formatters = {User.name: lambda m, a: m.name[:10]}

    格式化函数原型:

    def formatter(model, attribute):
        # `model` 是模型实例
        # `attribute` 是 Union[ColumnProperty, RelationshipProperty]
        pass
  • column_formatters_detail: Dict[MODEL_ATTR, Callable[[type, Column], Any]] 详细视图列格式化函数字典。列可以是字符串名称或 SQLAlchemy 列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_formatters_detail = {User.name: lambda m, a: m.name[:10]}

    格式化函数原型:

    def formatter(model, attribute):
        # `model` 是模型实例
        # `attribute` 是 Union[ColumnProperty, RelationshipProperty]
        pass
  • page_size: int 列表页面分页中默认显示的项目数。默认值为 10。

    示例:

    class UserAdmin(ModelView, model=User):
        page_size = 25
  • page_size_options: Sequence[int] 列表页面中的分页选择。默认值为 [10, 25, 50, 100]

    示例:

    class UserAdmin(ModelView, model=User):
        page_size_options = [50, 100]
  • column_details_list: Union[str, Sequence[MODEL_ATTR]] 详细页面中显示的列。列可以是字符串名称或 SQLAlchemy 列。

    注意: 默认显示模型的所有列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_details_list = [User.id, User.name, User.mail]
  • column_details_exclude_list: Sequence[MODEL_ATTR] 在详细页面中排除的列。列可以是字符串名称或 SQLAlchemy 列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_details_exclude_list = [User.mail]
  • list_template: str 列表视图模板。默认值为 sqladmin/list.html

  • create_template: str 创建视图模板。默认值为 sqladmin/create.html

  • details_template: str 详细视图模板。默认值为 sqladmin/details.html

  • edit_template: str 编辑视图模板。默认值为 sqladmin/edit.html

  • column_searchable_list: Sequence[MODEL_ATTR] 可搜索的列集合。假设只有文本字段是可搜索的,但具体取决于模型的实现。

    示例:

    class UserAdmin(ModelView, model=User):
        column_searchable_list = [User.name]
  • column_sortable_list: Sequence[MODEL_ATTR] 列表视图中可排序的列集合。

    示例:

    class UserAdmin(ModelView, model=User):
        column_sortable_list = [User.name]
  • column_default_sort: Union[MODEL_ATTR, Tuple[MODEL_ATTR, bool], list] 如果没有应用排序,则默认排序的列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_default_sort = "email"

    你可以使用元组控制升序和降序排列。在下面的示例中,项目将按降序排列:

    class UserAdmin(ModelView, model=User):
        column_default_sort = ("email", True)

    如果你想按多个列排序,可以传递一个元组的列表:

    class UserAdmin(ModelView, model=User):
        column_default_sort = [("email", True), ("name", False)]
  • can_export: bool 导出模型列表的权限。默认值为 True

  • column_export_list: List[MODEL_ATTR] 导出时要包含的列列表。列可以是字符串名称或 SQLAlchemy 列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_export_list = [User.id, User.name]
  • column_export_exclude_list: List[MODEL_ATTR] 导出时要排除的列列表。列可以是字符串名称或 SQLAlchemy 列。

    示例:

    class UserAdmin(ModelView, model=User):
        column_export_exclude_list = [User.id, User.name]
  • export_types: List[str] 可用的导出文件类型。目前仅支持 csv

  • export_max_rows: int 允许导出的最大行数。默认不限制。

  • form: Optional[Type[Form]] 表单类。如果要为模型使用自定义表单,可以重写此属性。这将完全禁用表单搭建功能。

    示例:

    class MyForm(Form):
        name = StringField('Name')
    
    class MyModelView(ModelView, model=User):
        form = MyForm
  • form_args: Dict[str, Dict[str, Any]] 表单字段的参数字典。请参阅 WTForms 文档获取可用选项列表。

    示例:

    from wtforms.validators import DataRequired
    
    class MyModelView(ModelView, model=User):
        form_args = dict(
            name=dict(label="User Name", validators=[DataRequired()])
        )
  • form_columns: Sequence[MODEL_ATTR] 表单中要包含的列列表。列可以是字符串名称或 SQLAlchemy 列。

    注意: 默认包含模型的所有列。

    示例:

    class UserAdmin(ModelView, model=User):
        form_columns = [User.name, User.mail]
  • form_excluded_columns: Sequence[MODEL_ATTR] 要从表单中排除的列列表。列可以是字符串名称或 SQLAlchemy 列。

    示例:

    class User

Admin(ModelView, model=User): form_excluded_columns = [User.id]

  • form_widget_args: Dict[str, Dict[str, Any]] 表单小部件渲染参数字典。使用此项可以自定义小部件渲染方式,无需使用自定义模板。

    示例:

  • form_include_pk: bool 控制表单是否包含主键列。

    示例:

  • form_ajax_refs: Dict[str, dict] 使用 Ajax 加载外键模型。应包含字典,键是字段名称,值是配置 Ajax 查找的字典。

    示例:

  • form_converter: Type[ModelConverterBase] 自定义表单转换器类。如果你想在默认转换的基础上添加自定义表单转换,可以使用此类。

    示例:

  • form_rules: list[str] 模型创建和编辑表单的渲染规则。这个属性改变了默认的表单渲染行为,可以重新排列字段的顺序、在字段之间添加文本、分组等。如果没有设置,则使用默认的 Flask-Admin 表单渲染逻辑。

    示例:

  • form_create_rules: list[str] 创建表单的自定义规则。不能与 form_rules 一起指定。

  • form_edit_rules: list[str] 编辑表单的自定义规则。不能与 form_rules 一起指定。

  • column_type_formatters: Dict[Type, Callable] 在列表视图中使用的值类型格式化器字典。

    默认情况下,两个类型会被格式化:

    • None 将显示为空字符串。

    • bool 会显示为复选框,如果为 True 显示勾选,否则显示 X。

    如果你不喜欢默认行为并且不希望应用任何类型格式化器,只需覆盖该属性为空字典:

    示例:

  • save_as: bool 设置 save_asTrue 时,可以启用“另存为新建”的功能,通常对象有三个保存选项:保存保存并继续编辑保存并添加另一个

最后更新于