2016-12-14 36 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)]"/> 
相關問題