在 Odoo 13 的 one2many 关系中显示非活动记录
Posted
技术标签:
【中文标题】在 Odoo 13 的 one2many 关系中显示非活动记录【英文标题】:Show inactive records in one2many relation in Odoo 13 【发布时间】:2020-08-31 00:12:14 【问题描述】:TLDR;如何在 Odoo 13 的 one2many 关系中显示带有标志 active=False
的记录?我在 xml 和 python 中都看不到它们。
我想在 Odoo13 的 res.partner 表单视图中显示所有会议(活动+非活动),同时仍仅在日历中显示活动。
我定义了 one2many 关系:
class ResPartner(models.Model):
_inherit = 'res.partner'
event_ids = fields.One2many('calendar.event', 'partner_id',
domain=['|', ('active', '=', True), ('active', '=', False)])
并将 one2many 字段放入视图中。
<field name="event_ids" mode="tree"
domain="[('partner_id', '=', active_id),
'|', ('active','=', True), ('active', '=', False),
context="'default_active': False, 'active_test': False">
<tree string="Events">
.... columns
.... button to add to calendar (or checkbox to toggle?)
</tree>
</field>
但我看不到非活动事件。如您所见,我还尝试将active_test
添加到上下文中,我还在字段/关系定义中明确定义了域。它不起作用。
我可以创建非活动事件并在编辑父记录时查看它。但是,它会在保存父记录后消失。我的目标是允许使用单个内联按钮从日历视图中添加或删除它。 AFAIK 它曾经在 Odoo9 中工作。
当我调用partner.event_ids
时,我什至在调试时都没有看到非活动的event_id,如果我需要它们,我可以调用
self.env['calendar.event'].with_context(active_test=False).search([('partner_id','=',self.id)])
这不是很方便,无论如何我不能在xml中使用它。
是否甚至可以在 Odoo 中显示具有 one2many 关系的非活动记录,或者我应该向 calendar.event 模型添加一个标志来控制日历视图中的可见性?
【问题讨论】:
channel_last_seen_partner_ids 使用context="'active_test': False"
,它是一个One2many 字段。
@Kenly 感谢您提供信息。它适用于 channel_last_seen_partner_ids 但不适用于我的情况。我根据链接代码更改了字段定义和xml,但仍然看不到非活动记录。但现在,至少我知道这是可能的。
【参考方案1】:
在字段中添加属性 context='active_test': False
class ResPartner(models.Model):
_inherit = 'res.partner'
event_ids = fields.One2many(
'calendar.event', 'partner_id',
domain=['|', ('active', '=', True), ('active', '=', False)],
context='active_test': False)
【讨论】:
以上是关于在 Odoo 13 的 one2many 关系中显示非活动记录的主要内容,如果未能解决你的问题,请参考以下文章
如何在 odoo 14 中取消缩小 one2many 树视图的列标题?