【教程】FastAPI-Amis-Admin注册SQLModel模型管理类,快速实现数据的增删改查(CRUD)

模型管理

fastapi-amis-admin中的模型管理类ModelAdminDjango-admin中的ModelAdmin使用方法非常相似,也具备django-admin中的绝大多数功能.fastapi-amis-admin可以用极少的代码快速实现常用的数据增删查改需求,对于个性化的数据操作fastapi-amis-admin也能很方便的自定义拓展.本文介绍注册简单的模型管理类,对于复杂的模型管理类可以根据实际需求参考官方教程文档.

示例-1

定义SQLModel模型

第一步,定义SQLModel模型,参考: https://sqlmodel.tiangolo.com/

class Category(SQLModel, table=True):
    id: int = Field(default=None, primary_key=True, nullable=False)
    name: str = Field(title='CategoryName')
    description: str = Field(default='', title='Description')

定义一个模型管理类

第二步,定义一个模型管理类, 继承admin.ModelAdmin, 并注册到管理站点.

@site.register_admin
class CategoryAdmin(admin.ModelAdmin):
    page_schema = '分类管理'
    # 配置管理模型
    model = Category

示例-2

# 创建一个SQLModel模型,详细请参考: https://sqlmodel.tiangolo.com/
class Article(SQLModel, table=True):
    id: int = Field(default=None, primary_key=True, nullable=False)
    title: str = Field(title='ArticleTitle', max_length=200)
    description: Optional[str] = Field(default='', title='ArticleDescription', max_length=400)
    status: bool = Field(None, title='status')
    content: str = Field(title='ArticleContent')
    # 关联Category模型,模型定义参考[示例-1]
    category_id: Optional[int] = Field(default=None, foreign_key="category.id", title='CategoryId')
    category: Optional[Category] = Relationship(back_populates="articles")


@site.register_admin
class ArticleAdmin(admin.ModelAdmin):
    page_schema = '文章管理'
    model = Article
    # 设置需要展示的字段
    list_display = [Article.id, Article.title, Article.description, Article.status, Category.name]
    # 设置模糊搜索字段
    search_fields = [Article.title, Category.name]
	# 自定义基础选择器
    async def get_select(self, request: Request) -> Select:
        stmt = await super().get_select(request)
        stmt.join(Category, Article.category_id == Category.id, isouter=True)
        return stmt

配置展示字段

默认情况下,管理列表非展示当前模型的全部字段.但是如果你只需要展示部分字段,或者你还需要展示相关模型的其他字段,你可以通过配置list_display来自定义需要展示的字段.

  • 例如在示例2中:

  • Article.contentArticle.category_id并不包括在展示字段当中.

  • Category.name是另一个模型的字段,也可以包括在展示字段中, 但是这里需要通过get_select方法自定义选择器left join Category模型.

配置模糊搜索字段

search_fields配置针对字符串字段查询方式为like过滤.如果不配置search_fields,则默认为equal查询方式.

自定义选择器

get_select自定义选择器可以实现针对不同请求的获取不同的初始化数据查询条件,类似于django-admin当中的get_queryset方法.

功能列表

目前fastapi-amis-admin中的模型管理类ModelAdmin已支持功能包括但不限于以下列表.

功能相关字段或方法备注
自定义批量查询字段fields, exclude
自定义批量查询展示字段list_display, get_list_display支持展示类型为图片,音频,视频,映射,列表,Json
自定义批量查询过滤表单list_filter支持文本精准/模糊匹配,时间范围过滤,多选过滤
自定义批量查询排序字段ordering
自定义模型主键pk_name
自定义批量查询选择器get_select支持Jion其他数据库表模型
自定义模型数据库session_factory
自定义批量查询只读字段readonly_fields
自定义批量查询每页的数据量list_per_page
自定义批量查询模糊搜索的字段search_fields
自定义支持批量编辑的字段bulk_edit_fields
自定义新增模型数据表单get_create_form
自定义更新模型数据表单get_update_form
自定义新增模型数据执行动作get_create_action
自定义更新模型数据执行动作get_update_action
自定义删除模型数据执行动作get_delete_action
自定义批量查询数据返回协议schema_list
自定义批量查询数据过滤提交协议schema_filter
自定义创建数据提交协议schema_create
自定义读取数据返回协议schema_read
自定义更新数据提交协议schema_update
自定义批量查询权限has_list_permission
自定义单项查询权限has_read_permission
自定义创建数据权限has_create_permission
自定义更新数据权限has_update_permission
自定义删除数据权限has_delete_permission

更多用法

ModelAdmin的用法非常灵活,这里仅仅展示了最为基本的用法,你可以阅读API文档或参考demo程序了解更为详细的用法.后续将会陆续补充具体的应用场景示例. 如果你有较好的应用示例或教程文档,可以通过github提交,非常感谢你的支持!fastapi_amis_admin将会做的更好!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值