将列表字段显示为矩阵
项目描述
此模块允许在表格中显示具有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
- show_column_totals
如果 field_value 是数值字段,表示是否要计算列总计。默认为 True
- field_att_<name>
按照需要使用此字符串声明 disabled 或 hidden 选项,以便将字段值与传递给选项的 <name> 所表示的 HTML 节点属性绑定。
示例
您需要一个已经填充了值的的数据结构。假设我们想在允许用户为每个项目每个用户填写一项任务的计划小时数的向导中使用此小部件。在这种情况下,我们可以使用 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_att_disabled 选项和控件字段来控制矩阵中字段的可编辑性。
已知问题/路线图
通过 field_extra_attrs 参数支持每个字段单元的额外属性。例如,我们可以将单元格设置为不可编辑、必填或只读。在只读情况下,还可以点击 m2o 打开相关记录。
支持限制矩阵中的总记录数。参考:https://github.com/OCA/web/issues/901
支持通过键盘箭头在单元格之间进行遍历。
通过在键盘上按 Shift+TAB 从后端进入小部件将进入第一个单元格,直到 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>
维护者
本模块由 OCA 维护。
OCA,或 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并推广其广泛应用。
本模块是 GitHub 上的 OCA/web 项目的组成部分。
欢迎您贡献力量。有关如何贡献的信息,请访问 https://odoo-community.org/page/Contribute。
项目详情
odoo14_addon_web_widget_x2many_2d_matrix-14.0.1.1.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9902557af42022acafd02405dbebabd37a4224429420067d18a6761c4ea58d62 |
|
MD5 | 05e39255b3ed2991ecbf36da40309453 |
|
BLAKE2b-256 | cd2c8289711bc414b3fc40f2f24bc2929b777911bdb9432de7b487f80789df43 |