如何在many2one字段中返回列表对象



我已经声明了一个多字段

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

然而,它失败了,并且没有显示带有package_obj的下拉列表。有人能帮我吗?

非常感谢你

在这种情况下,应该在compute上使用domain

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)

最新更新