2016-12-14 65 views
1

我试图将一个域添加到Odoo字段中的sale.order.line。具体来说,我试图确保唯一可供选择的Route是与订单行相关的产品具有相同名称的Route。这里是我的尝试:如何在XML视图中引用Odoo V10域中的子模型

这里是route_id原始出的现成字段定义一个sale.order.line

<field name="route_id" groups="sale_stock.group_route_so_lines"> 

我修改了它,包括像这样的域:

<field name="route_id" groups="sale_stock.group_route_so_lines" domain="[('name', '=', product_id.name)]"/> 

但是,我似乎无法通过product_id属性访问相关的product.product。据我所知,product_id只是简单地返回id,而不是实际的记录本身。因此,当我尝试将呼叫链接到name时,它不起作用。

我收到以下错误点击进入路由领域的订单时:

Uncaught Error: AttributeError: object has no attribute 'name' 

有谁知道正确的方式来为该域名添加到视图?

回答

0

你是对的,product_id是一个ID而不是记录,所以链接调用在域评估过程中不起作用。为了正确评估域,域中使用的值的字段必须存在于视图中。

要做到这一点,你可以添加一个related fieldsale.order.line模型,指着product_id.name

from openerp import fields, models 


class SaleOrderLine(models.Model): 
    _inherit = 'sale.order.line' 

    product_name = fields.Char(
     related='product_id.name', 
     string='Product Name', 
     store=True, 
    ) 

然后,在你的视图的XML定义,你就需要将product_name字段添加到视图,以便在域内使用它。您可以将invisible属性设置为1以便不显示在表单中。现在该领域可用于该领域:

<field name="product_name" invisible="1"/> 
<field name="route_id" groups="sale_stock.group_route_so_lines" 
     domain="[('name', '=', product_name)]"/> 
相关问题