将列表字段以矩阵形式显示
项目描述
2D矩阵用于x2many字段
此模块允许以表格形式显示x2many字段中的3元组($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_label_x_axis
使用另一个字段在表格标题中显示
- field_label_y_axis
使用另一个字段在表格标题中显示
- 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被合并。
支持每个单元格内的额外不可见字段。
错误跟踪器
错误在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>
维护者
此模块由OCA维护。
OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。
要为此模块做出贡献,请访问https://odoo-community.org。
项目详情
哈希值 for odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.2-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c90d950f899df59d65cdd92ecd1819906012cf9abfa10cacf5e5d169bdb290ce |
|
MD5 | 6bf84ae2ea23d8896aef6454b04e8eab |
|
BLAKE2b-256 | b43462646548409f66cd4b57f90691349546f3de977e8de6f7043c724ad7c5fa |