2016-03-27 8 views
1

私は、ここに私の注文ラインの木であるだけで情報のためOdoo 8:Many2oneフィールドを親モデルと自動的にリンクする方法は?

class SaleOrderCategory(models.Model): 
    _name = 'sale.order.category' 
    name = fields.Char('Name', required=True) 
    line_ids = fields.One2many('sale.order.line', 'category_id', 'Order Lines in this category') 
    order_id = fields.Many2one('sale.order', 'Order', required=True, readonly=True) 

class SaleOrder(models.Model): 
    _name = 'sale.order' 
    _inherit = 'sale.order' 
    order_category_ids = fields.One2many('sale.order.category', 'order_id', 'Categories in this order', readonly=True, copy=True) 

(など、小計を表示することができます)、特定のサブカテゴリー内のグループの販売注文ラインに順に新しいモデル「sale.order.category」を作成しました私の質問がある

<!-- adds a category column in the order lines list --> 
<xpath expr="//field[@name='order_line']/tree/field[@name='name']" position="after"> 
    <field name="category_id"/> 
</xpath> 

::私は(受注内側)注文行ツリーを通じて新しいカテゴリを作成するときにどのように私は自動的に現在の受注IDとORDER_IDフィールドを移入することができますカテゴリー列を追加するには、ビューの変更?

多くのおかげで、 マックス

答えて

0

予備発言:あなたが先に進む前にそれを見ているしたい場合がありますので、ご利用の場合は、公式sale_layoutモジュールが何をするかに関係しているようです。おそらく、最初から始めるのではなく、それを拡張することができます。

次に、あなたの質問に最も基本的な答えは、ビューからそれを作成するときに、あなたのsale.order.categoryモデルのorder_idフィールドにデフォルト値を渡すことです。

<xpath expr="//field[@name='order_line']/tree/field[@name='name']" position="after"> 
    <field name="category_id" context="{'default_order_id': parent.id}"/> 
</xpath> 

あなたcategory_idフィールドはsale.order.lineツリービュー上で定義されているので、parentを動的に参照する:あなたは、あなたが価値を生み出す元となるmany2oneフィールドに適切なデフォルト値でcontextを設定することでそれを行うことができますWebクライアントインターフェイス内の親レコード、ここではsale.orderです。

ただし、このオプションはうまく動作しません。

  • を使用すると、新しい販売注文を作成している場合は、あなたがのための可能な値が存在しないので、販売注文をしても、保存される前に、あなたのカテゴリを作成する必要がありますorder_idまだ。このため、order_idを必須にすることはできません。後でその値を設定するか、カテゴリを追加する前に注文を保存する必要があります。
  • sale.order.categoryモデルにはすでにorder_lines one2manyフィールドがあります。 order_idフィールドはline_idsフィールドと重複しています。これは、すべての行がおそらく同じ順序に属しているためです。

シンプル代替は完全に(あなたがそれを必要とするときlines_id[0].order_idを使用)order_idフィールドを省略したり、自動的にラインから計算されますrelated fieldに置き換えることであろう(それはから値を取ります最初の注文行):

order_id = fields.Many2one('sale.order', related='line_ids.order_id', readonly=True) 

あなたの必要条件に応じて、あなたの質問のみに基づいて言うのは難しいです。

関連する問題