我已经声明了一个多字段
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)