88## 自定义工具条动作
99
1010### 示例-1
11-
11+ 1、增加引用
1212``` python
13- @site.register_admin
14- class ArticleAdmin ( admin . ModelAdmin ):
15- page_schema = PageSchema( label = ' 文章管理 ' , icon = ' fa fa-file ' )
16- model = Article
13+ from fastapi_amis_admin.admin.admin import AdminAction
14+ from fastapi_amis_admin.amis import ActionType
15+ ```
16+ 2、修改上一节中 ` ArticleAdmin ` 类, ` page_schema ` 改为 ` page_schema = PageSchema(label='文章管理', icon='fa fa-file') ` 以增加图标,同时类中增加如下代码,来添加工具条
1717
18+ ``` python
1819 # 添加自定义工具条动作
1920 admin_action_maker = [
2021 lambda admin : AdminAction(
@@ -47,13 +48,19 @@ class ArticleAdmin(admin.ModelAdmin):
4748!!! note annotate "关于` ActionType ` "
4849
4950 ActionType事实上是[amis Action 行为按钮](https://baidu.gitee.io/amis/zh-CN/components/action?page=1)组件的一个python模型映射,它支持多种常见的行为类型.例如:ajax请求/下载请求/跳转链接/发送邮件/弹窗/抽屉/复制文本等等.
50-
51+
5152 fastapi_amis_admin的灵活性强体现之一,是因为它是基于amis的组件式开发,你可以在很多地方自由的替换或添加内置的amis组件.在此之前希望你能阅读[amis文档](https://baidu.gitee.io/amis/zh-CN/components/page),对amis核心组件有一定的了解.
5253
5354## 自定义单项操作动作
5455
56+ 我们将在上一步的基础上新增一个自定义普通处理动作
5557### 示例-2
56-
58+ 新增引入
59+ ``` python
60+ from typing import List
61+ from fastapi_amis_admin.amis import Dialog
62+ ```
63+ 增加一个普通动作定义:
5764``` python
5865# 创建普通ajax动作
5966class TestAction (admin .ModelAction ):
@@ -68,15 +75,31 @@ class TestAction(admin.ModelAction):
6875 ...
6976 # 返回动作处理结果
7077 return BaseApiOut(data = dict (item_id = item_id, data = data, items = list (items)))
78+ ```
79+ 修改` ArticleAdmin ` ,在` admin_action_maker ` 的list中追加一行` lambda admin: TestAction(admin, name='test_action', flags=['item', 'bulk']) ` 变为:
7180
72-
73- @site.register_admin
74- class ArticleAdmin (admin .ModelAdmin ):
75- page_schema = PageSchema(label = ' 文章管理' , icon = ' fa fa-file' )
76- model = Article
77- # 添加自定义单项和批量操作动作
81+ ``` python
82+ # 添加自定义工具条动作
7883 admin_action_maker = [
79- lambda admin : TestAction(admin, name = ' test_action' ,flags = [' item' ,' bulk' ])
84+ lambda admin : AdminAction(
85+ admin = admin,
86+ name = ' test_ajax_action' ,
87+ action = ActionType.Ajax(
88+ label = ' 工具条ajax动作' ,
89+ api = ' https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/mock2/form/saveForm'
90+ ),
91+ flags = [' toolbar' ]
92+ ),
93+ lambda admin : AdminAction(
94+ admin = admin,
95+ name = ' test_link_action' ,
96+ action = ActionType.Link(
97+ label = ' 工具条link动作' ,
98+ link = ' https://github.com/amisadmin/fastapi_amis_admin'
99+ ),
100+ flags = [' toolbar' ]
101+ ),
102+ lambda admin : TestAction(admin, name = ' test_action' , flags = [' item' , ' bulk' ])
80103 ]
81104```
82105
@@ -90,6 +113,7 @@ class ArticleAdmin(admin.ModelAdmin):
90113
91114## 自定义批量操作动作
92115
116+ 本部分修改方式同上一步。
93117### 示例-3
94118
95119``` python
@@ -116,19 +140,9 @@ class TestFormAction(admin.ModelAction):
116140 ...
117141 # 返回动作处理结果
118142 return BaseApiOut(data = dict (item_id = item_id, data = data, items = list (items)))
119-
120-
121- @site.register_admin
122- class ArticleAdmin (admin .ModelAdmin ):
123- page_schema = PageSchema(label = ' 文章管理' , icon = ' fa fa-file' )
124- model = Article
125-
126- # 添加自定义单项和批量操作动作
127- admin_action_maker = [
128- lambda admin : TestAction(admin, name = ' test_action' ,flags = [' item' ,' bulk' ])
129- ]
130-
131143```
144+ 在` admin_action_maker ` 的list中追加一行` lambda admin: TestFormAction(admin, name='test_form_action', flags=['item', 'bulk']) `
145+
132146
133147示例-3与示例-2非常相似, 但是它允许用户添加一个自定义表单,这个在很多情况下,非常有用.
134148
0 commit comments