2016-12-14 14 views
1

sale.order.lineのOdooフィールドにドメインを追加しようとしています。具体的には、選択可能な唯一のルートがオーダー明細に関連する商品と同じ名前のものであることを保証しようとしています。ここに私の試みは次のとおりです。ここでOdoo V10ドメインのXMLビューで子モデルを参照する方法

sale.order.lineroute_idの元のアウトオブボックスのフィールド定義です:

<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.productproduct_id属性でアクセスすることができないようです。私が知ることから、product_idは単に実際のレコードそのものではなくidを返すだけです。したがって、私がnameへの呼び出しをチェーンしようとすると、動作しません。

オーダーライン上のルートフィールドにクリックしたときに、私は次のエラーを取得する:

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

誰が表示するには、このドメインを追加するための適切な方法を知っていますか?

答えて

0

product_idはレコードではなくIDなので、チェーン評価はドメイン評価中は機能しません。ドメインを正しく評価するためには、ドメイン内で値が使用されているフィールドがビューに存在している必要があります。

ことは、これを実現するには、product_id.nameを指し、related fieldsale.order.lineにモデルを追加することができます。

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)]"/> 
関連する問題