在 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 输入明细时 可以多选吗

Odoo 防止在 One2many 字段中选择重复记录

如何在 odoo 14 中取消缩小 one2many 树视图的列标题?

如何在 set_values 方法 odoo 14 中保存 one2many 字段

one2many 的域不工作 Odoo

odoo one2many 默认未设置