Python 如何返回manyOne字段中的列表对象
我已经宣布了一个多人领域Python 如何返回manyOne字段中的列表对象,python,odoo-11,Python,Odoo 11,我已经宣布了一个多人领域 packaging_id = fields.Many2one( 'product.packaging', 'Package type', compute='_compute_package_type', index=True) 所以我需要做一个逻辑来返回我想要在列表中显示的对象。我尝试过使用计算选项,但我不确定这是否正确。跟随我的计算领域 @api.multi def _compute_package_type(self):
packaging_id = fields.Many2one(
'product.packaging', 'Package type', compute='_compute_package_type',
index=True)
所以我需要做一个逻辑来返回我想要在列表中显示的对象。我尝试过使用计算选项,但我不确定这是否正确。跟随我的计算领域
@api.multi
def _compute_package_type(self):
pckdel = self.batch_id.package_delivery_group
order = self.env['ord.data'].search([("pckdelgrp", "=", pckdel)], limit=1)
type = self.env['delivery.carrier'].search([("name", "=", order.deliverymethod)], limit=1)
if type.delivery_type == 'test' or type.delivery_type == 'xxx':
package_objs = self.env['product.packaging'].sudo().search([])
else:
package_objs = self.env['product.packaging'].search([("packager_carrier_type", "=", type.delivery_type)])
self.packaging_id = package_objs.ids
但是,它失败了,并且不会与包_objs一起出现在下拉列表中。有人能帮我吗
非常感谢您在这种情况下,您应该在
计算上使用域
def compute_package_type(self):
pckdel = self.batch_id.package_delivery_group
order = self.env['ord.data'].search([("pckdelgrp", "=", pckdel)], limit=1)
type = self.env['delivery.carrier'].search([("name", "=", order.deliverymethod)], limit=1)
if type.delivery_type == 'test' or type.delivery_type == 'xxx':
package_objs = self.env['product.packaging'].sudo().search([])
else:
package_objs = self.env['product.packaging'].search([("packager_carrier_type", "=", type.delivery_type)])
return [('id','in',package_objs.ids)]
packaging_id = fields.Many2one(
'product.packaging', 'Package type', domain=compute_package_type)
你好,普鲁思维,非常感谢您的快速回复。但是,当我尝试接收到属性中使用的错误字段“\u compute\u package\u type”必须出现在视图中,但丢失:-“domain=”中的“\u compute\u package\u type”您好,我编辑了我的答案,请检查。在字段声明上定义函数Nice Pruthvi再次感谢您!!!它工作完美,但只有一次我想有这个方法,然后域'计算“每次我尝试打开下拉列表时。你认为这是可能的吗?是的,如果我们在某个依赖字段的onchange上执行此逻辑,这将在该字段每次更改时返回域。否则,如果您的匹配条件在每次打开下拉列表时都没有更改,则这将适用于您。如果匹配条件是固定的,则此解决方案是最佳的,因为每次使用新记录时,在打开该记录时只应匹配一次。如果您的匹配条件基于其他字段的值发生变化,请告诉我。