如何获取 One2many/Many2many 字段中的非活动记录?
How to get inactive records in One2many/Many2many fields?
举一个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 returns pet(56,)
。那里不包括非活动记录。打印时有什么办法可以显示吗person.pets_ids
?
到目前为止我这样做了:
pets = self.env['pet'].search([
('owner_id', '=', person.id),
'|',
('active', '=', True),
('active', '=', False),
])
但我想知道有没有更好的方法
你可以通过
{'active_test': False}
在上下文中。你的情况:
pets = self.env['pet'].with_context(active_test=False).search([('owner_id', '=', person.id)])
举一个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 returns pet(56,)
。那里不包括非活动记录。打印时有什么办法可以显示吗person.pets_ids
?
到目前为止我这样做了:
pets = self.env['pet'].search([
('owner_id', '=', person.id),
'|',
('active', '=', True),
('active', '=', False),
])
但我想知道有没有更好的方法
你可以通过
{'active_test': False}
在上下文中。你的情况:
pets = self.env['pet'].with_context(active_test=False).search([('owner_id', '=', person.id)])