如何在One2many / Many2many字段中获取非活动记录?

时间:2018-01-23 12:30:35

标签: python python-2.7 odoo-8 odoo

让我们举一个 One2many 的例子,这更清楚:想象一个人可以拥有几只宠物,但宠物只能拥有一只宠物:

class Pet(models.Model):
    _name='pet'

    owner_id = fields.Many2one(
        comodel_name='person',
        string='Owner',
    )
    active = fields.Boolean(
        string='Active',
        default=True,
    )

class Person(models.Model):
    _name='person'

    pet_ids = fields.One2many(
        comodel_name='pet',
        inverse_name='owner_id',
        string='Pets',
    )

现在你有一个人( Id:1 )有两只宠物( Ids:56,57 ),但其中一只没有活动(一个Id:57 )。如果您打印person.pet_ids,Odoo会返回pet(56,)。那里不包括非活动记录。有没有办法在打印person.pets_ids时显示它们?

到目前为止我这样做了:

pets = self.env['pet'].search([
    ('owner_id', '=', person.id),
    '|',
    ('active', '=', True),
    ('active', '=', False),
])

但我想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:5)

你可以传递

{'active_test': False}

在上下文中。在你的情况下:

pets = self.env['pet'].with_context(active_test=False).search([('owner_id', '=', person.id)])