ModelView
sqladmin.models.ModelView
基类:BaseView
用于定义模型的管理行为的基类。
用法
from sqladmin import ModelView
from mymodels import User # SQLAlchemy 模型
class UserAdmin(ModelView, model=User):
can_create = True类属性:
name_plural:strModelView 的复数名称。默认值为模型类名加上 "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] passcolumn_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] passpage_size:int列表页面分页中默认显示的项目数。默认值为 10。示例:
class UserAdmin(ModelView, model=User): page_size = 25page_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 = MyFormform_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_as为True时,可以启用“另存为新建”的功能,通常对象有三个保存选项:保存、保存并继续编辑和保存并添加另一个。
最后更新于