将列表字段显示为矩阵
项目描述
此模块允许以表格形式显示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从后端进入小部件将进入第一个单元格,直到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@brainbeanapps.com>
Adrià Gil Sorribes <adria.gil@forgeflow.com>
维护者
此模块由OCA维护。
OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。
此模块是GitHub上OCA/web项目的一部分。
欢迎您贡献力量。有关如何贡献的信息,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo13_addon_web_widget_x2many_2d_matrix-13.0.1.1.1-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e5410ba82a62e0548a903c402cd73810b6b083cf998fd09180b25b78c638c5c |
|
MD5 | e912a967f4e8d5c39c27e71d479f4e96 |
|
BLAKE2b-256 | 684522c5e42d73a2684248a497881c53a89c2f69007085ffe4d92c7f8f170f8c |