概念
看板视图是看板的可视化:它将记录显示为“卡片”,介于列表视图和不可编辑的表单视图之间。
记录可以按列分组,用于工作流可视化或操作(例如任务或工作进度管理),也可以不分组(仅用于可视化记录)。
属性
看板视图的根元素是<kanban>
,它可以使用以下属性
- default_group_by
如果没有通过操作或当前搜索指定分组,看板视图是否应该分组。应该是未指定分组时要分组的字段名称 - default_order
如果用户尚未对记录进行排序,则使用卡片排序顺序(通过列表视图) - class
将超文本标记语言类添加到看板视图的根超文本标记语言元素 - examples
如果在看板示例注册表中设置为键,则列设置示例将在分组看板视图中可用。这是如何定义这些设置的示例 - group_create
“添加新列”栏是否可见。默认值:真。 - group_delete
是否可以通过上下文菜单删除组。默认值:真。 - group_edit
是否可以通过上下文菜单编辑组。默认值:真。 - archivable
如果在模型上定义了活动字段,是否可以归档/恢复属于列的记录。默认值:真 - quick_create
是否可以在不切换到表单视图的情况下创建记录。默认情况下,当看板视图按many2one、选择、字符或布尔字段分组时,启用quick_create,如果不启用,则禁用 - quick_create_view
表单视图引用,指定用于记录快速创建的视图 - records_draggable
看板分组时是否可以拖动记录。默认值:真。
设置为true以始终启用它,设置为false以始终禁用它
子元素
- field
声明要在看板逻辑中使用的字段。如果该字段只是显示在看板视图中,则不需要预先声明。
可能的属性是:-
name(必填)
要获取的字段的名称 -
allow_group_range_value(可选)
日期或日期时间字段是否允许从组范围(由组的第一个和最后一个日期组成)计算的值。当看板视图按该字段分组时,启用“快速创建”和“拖放”功能。默认值:假。
-
- progressbar
声明一个进度栏元素以放在看板列的顶部。
可能的属性是:-
field(必填)
字段的名称,该字段的值用于对进度栏中列的记录进行分组 -
color(必填)
JSON将上述字段值映射到“危险”、“警告”、“成功”或“静音”颜色 -
sum_field(可选)
列的记录值将被求和并显示在进度栏旁边的字段的名称(如果省略,则显示记录总数)
-
- templates
定义QWeb模板模板列表。为了清晰起见,卡片定义可以拆分为多个模板,但看板视图必须至少定义一个根模板看板框,每个记录将呈现一次- widget
当前的KanbanRecord(),可用于获取一些元信息。这些方法也可以直接在模板上下文中使用,不需要通过小部件访问 - record
具有所有请求字段作为其属性的对象。每个字段有两个属性value和raw_value,前者根据当前用户参数格式化,后者是read()中的直接值(根据用户语言环境格式化的日期和日期时间字段除外) - context
当前上下文,来自操作,以及在嵌入到表单视图中的看板视图的情况下的one2许多或many2许多字段 - user_context
- read_only_mode
- selection_mode
当看板视图在移动环境中打开时,从m2o/m2m字段中选择记录。
- widget
案例
- 新建model
class comics(models.Model):
_name = 'test_demo.comics'
_description = 'comics'
name = fields.Char(string='动漫标题')
total = fields.Integer(string='总集数')
score = fields.Float(string='评分')
release_date = fields.Date(string='上映时间', default=fields.Date.today())
current = fields.Integer(string='当前剧集')
cover_image = fields.Binary(string='封面图片', attachment=True)
- 给model授予权限
access_test_demo_comics,test_demo.comics,model_test_demo_comics,base.group_user,1,1,1,1
- 创建菜单
<menuitem name="test_demo" id="test_demo.menu_root"/>
<menuitem id="menu_comics_view" name="comics" action="act_comics_view" parent="test_demo.menu_root"/>
- 创建视图
<record id="act_comics_view" model="ir.actions.act_window">
<field name="name">comics</field>
<field name="res_model">test_demo.comics</field>
<field name="view_mode">tree,kanban,form</field>
</record>
<record model="ir.ui.view" id="view_comics_comics_form">
<field name="name">comics.form</field>
<field name="model">test_demo.comics</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="cover_image" widget="image"/>
<field name="score"/>
</group>
<group>
<field name="current"/>
<field name="total"/>
<field name="release_date"/>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_comics_comics_search">
<field name="name">comics.search</field>
<field name="model">test_demo.comics</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
</search>
</field>
</record>
<record model="ir.ui.view" id="view_comics_comics_kanban">
<field name="name">comics.kanban</field>
<field name="model">test_demo.comics</field>
<field name="arch" type="xml">
<kanban>
<field name="id"/>
<field name="name"/>
<field name="release_date"/>
<field name="current"/>
<field name="total"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_card" style="height: 150px; width: 300px;">
<div class="o_kanban_image" style="width:60%;height:100%;">
<img alt="comics" style="width:100%;height:100%;"
t-att-src="kanban_image('test_demo.comics', 'cover_image', record.id.raw_value)"/>
</div>
<div class="oe_kanban_content">
<div class="o_kanban_record_title">
<field name="name" class="o_text_overflow"/>
</div>
<div class="o_kanban_record_bottom">
<span class="oe_kanban_bottom_right">
<field name="release_date"/>
</span>
</div>
<div class="o_kanban_record_bottom" style="height: 40px"> </div>
<div class="o_kanban_record_bottom">
<span class="oe_kanban_bottom_right">
当前更新到<field name="current"/>集
</span>
</div>
<div class="o_kanban_record_bottom">
<span class="oe_kanban_bottom_right">
总共<field name="total"/>集
</span>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
- 最后注册
'security/ir.model.access.csv',
'views/comics.xml',
以上案例来自于: 神州数码云基地