Odoo 方法获取默认位置

Odoo 方法获取默认位置,odoo,odoo-8,odoo-9,Odoo,Odoo 8,Odoo 9,在sale.order.line中,我有字段location_id,我希望它在默认情况下填充。问题是我得到了TypeError:“bool”对象没有带有此代码的属性“\uu getitem\uuu”,self总是为空。如果我将if self.product\u id:添加到我的方法中,它就会停止工作 class SaleOrderLine(models.Model): _inherit=“sale.order.line” 定义获取默认位置(自身): 返回self.env['stock.locat

在sale.order.line中,我有字段location_id,我希望它在默认情况下填充。问题是我得到了
TypeError:“bool”对象没有带有此代码的属性“\uu getitem\uuu”
self
总是为空。如果我将
if self.product\u id:
添加到我的方法中,它就会停止工作

class SaleOrderLine(models.Model):
_inherit=“sale.order.line”
定义获取默认位置(自身):
返回self.env['stock.location'].search(['location\u id','=',self.product\u id.warehouse\u id.out\u type\u id.default\u location\u src\u id.id],limit=1)
location\u id=fields.manyOne('stock.location','location',default=\u get\u default\u location)

默认方法总是有空记录集。除非在调用默认方法之前发现要在上下文中获取某些内容,否则不会在那里获取任何数据

但在您的示例中,您可以使用onchange方法来表示产品标识。我敢打赌,如果线上没有产品,您就不需要位置标识。因此,在
sale.order.line
上覆盖产品标识的原始onchange方法,并始终设置所需的默认位置标识。(我认为它称为
product\u id\u change

def产品标识变更(自):
res=super(SaleOrderLine,self).product\u id\u change()
如果self.product\u id:
self.location_id=#您在此处搜索
其他:
self.location\u id=False
返回res