将列表字段以矩阵形式显示
项目描述
此模块允许将x2many字段以三元组($x_value, $y_value, $value)在表格中显示
$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_value 将此字段显示为值
show_row_totals 如果field_value是数值字段,则表示您是否想要计算行总计。默认为True
show_column_totals 如果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 参数支持每个字段单元格的额外属性。例如,我们可以将单元格设置为不可编辑、必填或只读。在只读情况下,也可以点击 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)
[修复] 单元格无法正确渲染。(#1126)
12.0.1.0.0 (2018-11-20)
[12.0][迁移] web_widget_x2many_2d_matrix (#1101)
错误跟踪器
问题跟踪在 GitHub Issues。如有问题,请检查是否已经报告了您的问题。如果您是第一个发现的,请帮助我们通过提供详细且受欢迎的 反馈。
请勿直接联系贡献者以寻求支持或帮助解决技术问题。
致谢
贡献者
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>
Adrià Gil Sorribes <adria.gil@forgeflow.com>
Christopher Ormaza <chris.ormaza@forgeflow.com>
SodexisTeam <dev@sodexis.com>
维护者
此模块由 OCA 维护。
OCA,即 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并推广其广泛使用。
当前 维护者
此模块是 GitHub 上 OCA/web 项目的组成部分。
欢迎您贡献力量。要了解如何做,请访问 https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo_addon_web_widget_x2many_2d_matrix-17.0.1.0.0.2-py3-none-any.whl
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 32e23a383533d3975ce8f855b0eb83e7a6f18e39b309e9d0f9e4e3283d789573 |
|
| MD5 | f25cde1fe843629f1c9332a9107a53da |
|
| BLAKE2b-256 | 7f428022124500fa2d9f9213a0f58e7d1177ebf442df57dff8d7aea4357a088a |