将列表字段以矩阵形式显示
项目描述
此模块允许以表的形式显示具有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)是可编辑的。
示例用例可以是:选择一些项目和员工,以便经理可以轻松填写每个员工的一个任务的计划工时。结果可能如下所示
这种方法的优点在于,您可以使用此小部件有任意数量的列,而要将这些内容放入标准x2many列表则需要一些相当复杂的技巧。
目录
用法
通过以下方式使用此小部件
<field name="my_field" widget="x2many_2d_matrix" />
此假设my_field指向具有字段x、y和value的模型。如果您的字段名称不同,请作为属性传递正确的名称
<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**) 以帮助我们解决它。
请勿直接联系贡献者以获取支持或帮助解决技术问题。
致谢
贡献者
Holger Brunn <hbrunn@therp.nl>
Pedro M. Baeza <pedro.baeza@tecnativa.com>
Artem Kostyuk <a.kostyuk@mobilunity.com>
Simone Orsi <simone.orsi@camptocamp.com>
Timon Tschanz <timon.tschanz@camptocamp.com>
Jairo Llopis <jairo.llopis@tecnativa.com>
Dennis Sluijk <d.sluijk@onestein.nl>
-
Alexey Pelykh <alexey.pelykh@corphub.eu>
维护者
此模块由 OCA 维护。
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)。
项目详细信息
哈希值 for odoo12_addon_web_widget_x2many_2d_matrix-12.0.2.2.3-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e54791631c8e16b1bb1e22940992e02fbed2e4df7cb77c26b77b77b900d69115 |
|
MD5 | 4bc10f0efab9dd6dfc046e6175340ac7 |
|
BLAKE2b-256 | 8467eae67c8c40e2cf3cc636dae7ec09b1923cf382b460c1d7405c1d03355092 |