如何在odoo10的看板视图中显示选择字段的所有阶段(甚至是空的阶段)?

2024-05-17 05:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在看板视图中显示一个在odoo10中定义为选择域的模型的阶段。但是,当我在看板视图中添加stage字段时,包含记录的stage将显示在Kanban视图中,但不是所有stage。在

我有一个选择域,有3个阶段和看板视图。我在我的xml中使用了下面的代码在看板视图中显示阶段。在

这是我的选择域:

stage = fields.Selection([
        ('not reviewed', 'Not Reviewed'), 
        ('review in progress', 'Review In Progress'), 
        ('review complete', 'Review Complete')
    ], default='not reviewed')

在xml部分,我使用看板视图中的选择字段在视图中显示:

^{pr2}$

这段代码只显示那些在那个阶段中有记录的阶段,而我想显示所有阶段,即使是空的阶段。我搜索了很多,找到了与这个问题相关的https://stackoverflow.com/a/40761734/2498426解决方案。但对于我的案例(选择字段)来说,这并不清楚。在


Tags: 代码odoo10模型视图fields定义记录not
2条回答

在人力资源合同模块中可以找到一个很好的例子

stage = fields.Selection([
    ('not reviewed', 'Not Reviewed'), 
    ('review in progress', 'Review In Progress'), 
    ('review complete', 'Review Complete')
], default='not reviewed',group_expand='_expand_states')


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

我试图通过在Odoo10中应用Explorer解决方案来实现静态stage,我在Odoo12中也发现了这一特性,但在Odoo10中却不起作用。因此,我使用下面的技术,即使看板视图中有空列,也有静态和固定的阶段:

首先,我定义了一个新模型,如下所示:

class CheckListStage(models.Model):

    _name = "checklist.stage"
    _rec_name = "name"
    _sequence = "sequence, name, id"

    name = fields.Text(string='Name', required=True, translate=True)
    sequence = fields.Integer('Sequence', default=1, help='Used to order stages. Loweer is better.')

然后我使用以下代码将3条记录作为xml文件中的数据文件添加到该模型中:

^{pr2}$

因为有过检查表.阶段在我的模型看板视图中,我使用了一个多个字段,如下所示,其中group_expand将所有阶段放在看板视图中:

stage = fields.Many2one('checklist.stage', group_expand='_expand_stages', default=lambda self: self._default_stage())

对于group_expand,我使用以下代码作为_expand_satages方法:

def _expand_stages(self, states, domain, order):
        stage_ids = self.env['checklist.stage'].search([])
        return stage_ids

最后,在看板视图中,我刚刚向看板emelent添加了default_group_by="stage"和{}。虽然,它有点长,但它在我的情况下起作用了。在

相关问题 更多 >