odoo看板笔记

本文详细介绍了在Odoo12中如何正确配置看板视图,包括使用many2one字段作为默认分组,避免widget=state_selection错误,以及自定义group_expand属性来显示所有可能的状态,即使它们为空。通过具体案例展示了如何实现看板状态的自动重置和自定义模板。
案例0001
odoo中看板使用
#其中一定要many2one阶段字段名称 stage_id  <kanban default_group_by="stage_id">    否则 挂件widget="state_selection"会报错
''' <field name="kanban_state" widget="state_selection"/>
'''
看板默认分组当无此类型当值时也默认出现在看板里
#对于odoo12来说  group_expand=''   对于selection类型
state = fields.Selection([('a', "A"), ('b', "B"),('c', "C"), ('d', "D")], group_expand='_expand_states')

def _expand_states(self, states, domain, order):
    # return all possible states, in order
    return [key for key, val in type(self).state.selection]





案例0002
#对于odoo12来说  group_expand=''   对于many2one类型
stage_id = fields.Many2one('crm.stage', string='Stage', ondelete='restrict', track_visibility='onchange', index=True,
                           domain="['|', ('team_id', '=', False), ('team_id', '=', team_id)]",
                           group_expand='_read_group_stage_ids', default=lambda self: self._default_stage_id())
kanban_state = fields.Selection([
('normal', 'Grey'),
('done', 'Green'),
('blocked', 'Red')], string='Kanban State',
copy=False, default='normal', required=True)

@api.multi
def write(self, vals):
now = fields.Datetime.now()
if 'stage_id' in vals:
# reset kanban state when changing stage
if 'kanban_state' not in vals:
vals['kanban_state'] = 'normal'
result = super(Task, self).write(vals)
return result
 



@api.model
def _read_group_stage_ids(self, stages, domain, order): """ Read group customization in order to display all the stages in the kanban view, even if they are empty """ stage_ids = stages._search([], order=order, access_rights_uid=SUPERUSER_ID) return stages.browse(stage_ids)
<record id="accountant_income_expenditure_kanban_view" model="ir.ui.view">
            <field name="name">Accountant Expenditure Kanban</field>
            <field name="model">accountant.income.expenditure</field>
            <field name="arch" type="xml">
                <kanban default_group_by="stage_id">
                    <field name="id"/>
                    <field name="image_small"/>
                    <field name="name"/>
                    <templates>
                        <t t-name="kanban-box">
                            <div class="oe_kanban_global_click">
                                <div class="o_kanban_image">
                                    <img t-att-src="kanban_image('accountant.income.expenditure', 'image_medium', record.id.raw_value)" alt="事件"/>
                                </div>
                                <div class="oe_kanban_details">
                                    <strong class="o_kanban_record_title">
                                        <field name="name"/></strong>
                                    <div class="o_kanban_tags_section">
                                        <field name="in_out_put" />
                                    </div>
                                    <ul>
                                        <li><strong>金额: <field name="amount"></field></strong></li>
                                    </ul>
                                    <div name="tags"/>
                                    <div>
                                        <field name="leave_property" widget="priority"/>
<field name="kanban_state" widget="state_selection"/> </div> </div> </div> </t> </templates> </kanban> </field> </record>

 

转载于:https://www.cnblogs.com/1314520xh/p/11386081.html

Odoo中,看板视图(Kanban View)是一种用于展示数据的可视化界面,通常用于任务管理、项目管理、销售管道等场景。它基于HTML和QWeb模板构建,允许用户以卡片形式查看和操作数据。以下从配置、界面操作、模块应用三个方面详细说明Odoo看板视图的使用。 ### 看板视图配置 在Odoo中配置看板视图主要涉及XML定义和QWeb模板的编写。看板视图的核心结构由`<kanban>`标签定义,并通过`<field>`和`<button>`等Odoo特定标签来绑定模型字段和操作。此外,QWeb模板负责动态生成前端内容,支持条件判断、循环等逻辑控制。 一个基本的看板视图结构如下: ```xml <record id="view_kanban_custom" model="ir.ui.view"> <field name="name">custom.kanban</field> <field name="model">custom.model</field> <field name="arch" type="xml"> <kanban> <field name="name"/> <field name="state"/> <templates> <t t-name="kanban-box"> <div class="oe_kanban_card"> <strong><field name="name"/></strong> <p>State: <field name="state"/></p> </div> </t> </templates> </kanban> </field> </record> ``` 上述代码定义了一个简单的看板视图,其中`<templates>`标签内定义了QWeb模板,该模板决定了每张卡片的外观和内容[^1]。 ### 界面操作 在Odoo客户端中,用户可以通过拖拽卡片来更改其状态或排序,例如在任务管理中将任务从“待办”列拖到“进行中”列。看板视图支持动态加载数据,当用户滚动页面时,系统会自动请求更多记录以提升性能。 此外,用户还可以通过点击卡片展开详细信息,或者点击按钮执行特定操作(如编辑、删除、状态变更等)。按钮的定义方式如下: ```xml <button name="action_done" string="Mark as Done" type="object" class="btn-primary"/> ``` 此按钮将在卡片中显示为“Mark as Done”,点击后将调用模型中的`action_done`方法[^1]。 ### 模块应用 在Odoo模块中,看板视图常用于展示模型记录的集合,尤其适用于需要可视化状态流转的场景。例如,在CRM模块中,销售机会以看板形式展示,每个卡片代表一个潜在客户,卡片可按销售阶段(如初步接触、需求分析、报价中、成交)进行分类。 为了优化看板视图的显示效果,可以自定义CSS样式。例如,以下CSS代码用于限制模块名称的显示长度,避免文本溢出: ```css .oe_module_name > span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } ``` 该样式可确保模块名称在空间不足时显示为省略号,提升界面美观性[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值