跳转到主要内容

将列表字段以矩阵形式显示

项目描述

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runbot

此模块允许以表的形式显示具有3元组($x_value, $y_value, $value)的x2many字段

$x_value1

$x_value2

$y_value1

$value(1/1)

$value(2/1)

$y_value2

$value(1/2)

$value(2/2)

其中value(n/n)是可编辑的。

示例用例可以是:选择一些项目和员工,以便经理可以轻松填写每个员工的一个任务的计划工时。结果可能如下所示

Screenshot

这种方法的优点在于,您可以使用此小部件有任意数量的列,而要将这些内容放入标准x2many列表则需要一些相当复杂的技巧。

目录

用法

通过以下方式使用此小部件

<field name="my_field" widget="x2many_2d_matrix" />

此假设my_field指向具有字段xyvalue的模型。如果您的字段名称不同,请作为属性传递正确的名称

<field name="my_field" widget="x2many_2d_matrix" field_x_axis="my_field1" field_y_axis="my_field2" field_value="my_field3">
    <tree>
        <field name="my_field"/>
        <field name="my_field1"/>
        <field name="my_field2"/>
        <field name="my_field3"/>
    </tree>
</field>

您可以传递以下参数

field_x_axis

指示点x值的字段

field_y_axis

指示点y值的字段

field_label_x_axis

使用另一个字段在表格标题中显示

field_label_y_axis

使用另一个字段在表格标题中显示

field_value

将此字段显示为值

show_row_totals

如果 field_value 是数值字段,则表示是否要计算行总计。默认为 True

显示列总计

如果 field_value 是数值字段,则表示是否要计算列总计。默认为 True

示例

您需要一个已经填充了值的数据库结构。假设我们想在用户可以填写每个用户每个项目的计划工作小时的向导中使用此小部件。在这种情况下,我们可以使用 project.task 作为我们的数据模型,并从我们的向导指向它。关键部分是我们需要在默认函数中填写该字段

from odoo import fields, models

class MyWizard(models.TransientModel):
    _name = 'my.wizard'

    def _default_task_ids(self):
        # your list of project should come from the context, some selection
        # in a previous wizard or wherever else
        projects = self.env['project.project'].browse([1, 2, 3])
        # same with users
        users = self.env['res.users'].browse([1, 2, 3])
        return [
            (0, 0, {
                'name': 'Sample task name',
                'project_id': p.id,
                'user_id': u.id,
                'planned_hours': 0,
                'message_needaction': False,
                'date_deadline': fields.Date.today(),
            })
            # if the project doesn't have a task for the user,
            # create a new one
            if not p.task_ids.filtered(lambda x: x.user_id == u) else
            # otherwise, return the task
            (4, p.task_ids.filtered(lambda x: x.user_id == u)[0].id)
            for p in projects
            for u in users
        ]

    task_ids = fields.Many2many('project.task', default=_default_task_ids)

现在在我们的向导中,我们可以使用

<field name="task_ids" widget="x2many_2d_matrix" field_x_axis="project_id" field_y_axis="user_id" field_value="planned_hours">
    <tree>
        <field name="task_ids"/>
        <field name="project_id"/>
        <field name="user_id"/>
        <field name="planned_hours"/>
    </tree>
</field>

已知问题/路线图

  • 通过 field_extra_attrs 参数支持每个字段单元格的额外属性。例如,可以将单元格设置为不可编辑、必填或只读。在 readonly 的情况下,还可以通过点击 m2o 打开相关记录。

  • 支持限制矩阵中的总记录数。参考:[链接](https://github.com/OCA/web/issues/901)

  • 支持通过键盘箭头遍历单元格。

  • 按下键盘上的 Shift+TAB 从背后进入小部件将进入第 1 个单元格,直到 [链接](https://github.com/odoo/odoo/pull/26490) 合并。

  • 支持每个单元格内的额外隐藏字段。

  • 支持看板模式。当前行为强制列表模式。

变更日志

12.0.1.0.1 (2018-12-07)

  • [修复] 单元格无法正确渲染。([链接](https://github.com/OCA/web/issues/1126))

12.0.1.0.0 (2018-11-20)

  • [12.0][迁移] web_widget_x2many_2d_matrix ([链接](https://github.com/OCA/web/issues/1101))

错误跟踪器

问题在 [GitHub Issues](https://github.com/OCA/web/issues) 上跟踪。如果在出现问题时,请检查是否已经报告了您的问题。如果是您首先发现的,请提供详细的和受欢迎的 [反馈](https://github.com/OCA/web/issues/new?body=module:%20web_widget_x2many_2d_matrix%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**) 以帮助我们解决它。

请勿直接联系贡献者以获取支持或帮助解决技术问题。

致谢

作者

  • Therp BV

  • Tecnativa

  • Camptocamp

  • CorporateHub

贡献者

维护者

此模块由 OCA 维护。

Odoo Community Association

OCA,即 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并促进其广泛使用。

此模块是 [OCA/web](https://github.com/OCA/web/tree/12.0/web_widget_x2many_2d_matrix) 项目的 GitHub 上的 [OCA/web](https://github.com/OCA/web/tree/12.0/web_widget_x2many_2d_matrix) 的一部分。

欢迎您做出贡献。要了解如何进行,请访问 [贡献页面](https://odoo-community.org/page/Contribute)。

项目详细信息


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程。

构建分发

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面