2016-12-16 1 views
0

one2manyフィールドからレコードを作成しているときに、複数のフィールドのデフォルト値を設定したい場合、そのデフォルト値は親モデルから取得されます。one2manyフィールドからレコードを作成するときにデフォルト値を設定する - odoo

Odooモデル構造

class purchase_order(models.Model): 
    _inherit='purchase.order' 

    cash_forecast_ids = fields.One2many(comodel_name='cash.forecast', inverse_name='purchase_order_id', string='Payment Schedules') 


class cash_forecast(models.Model): 
    _name='cash.forecast' 

    purchase_order_id = fields.Many2one(comodel_name='purchase.order', string='PO', select=True, copy=False) 
    foreign_currency_amount = fields.Float("Foreign Currency Amount", copy=False) 
    currency_id = fields.Many2one(comodel_name="res.currency", string="Currency", copy=False) 
    company_id = fields.Many2one(comodel_name='res.company', string='Company') 

問題: 今、私が何をしたいのか、私は現金予報レコードはなりながら 購入注文から通貨と会社を設定したいです POフォームビューから作成されましたが、私はそれを行う方法がわかりません。

:私はできテイク通貨または関連会社フィールドまたは会社と 通貨は手動で入力する必要のあるいくつかの他の状況があるので、機能とその無POリファレンスの が設定されていないのです。

POフォームビュー

<page string="Deliveries &amp; Invoices" position="after"> 
    <page string="Payment Scedule"> 
     <field name="cash_forecast_ids" attrs="{'readonly' : [('state','in',['done','cancel'])]}"> 
      <tree string="Payment Scedule" editable="bottom"> 
       <field name="name"/> 
       <field name="cash_forecast_type_id" required="1" domain="[('add_to_po_payment_schedule','=',True)]" /> 
       <field name="note" /> 
       <field name="forecast_date" /> 
       <field name="period_id" required="1" /> 
       <field name="foreign_currency_amount" required="1" /> 
       <field name="currency_id" required="1" /> 
       <field name="purchase_order_id" invisible="1"/> 
       <field name="company_id" required="1" /> 
      </tree> 
     </field> 
    </page> 
</page> 

いずれかは、私はそのような場合に何をすべき、私をお勧めすることはできますか?

答えて

1

私はそれを行う方法を得た。 one2manyフィールドにレコードを追加しながら、直接デフォルト値を設定するために

、我々は接頭 default_field_nameに関連して値を設定する必要があります値。 =

コンテキスト "{ 'default_currency_id':currency_id、 'default_company_id':のcompany_id}"

注:あなたがその新しいレコードと新しいレコードと を作成中にone2manyに値を提供する場合active_idは使用できません。モデルには アクティブなIDは存在しません。 親レコードを保存するとアクセスできます。

ソリューション:

<field name="cash_forecast_ids" context="{'default_currency_id' : currency_id, 'default_company_id' : company_id}"> 
    <tree string="Payment Scedule" editable="bottom"> 
     <field name="name"/> 
     <field name="forecast_date" /> 
     <field name="foreign_currency_amount" required="1" /> 
     <field name="currency_id" domain="[('id','=',parent.currency_id)]" required="1" /> 
     <field name="purchase_order_id" invisible="1"/> 
     <field name="company_id" domain="[('id','=',parent.company_id)]" required="1" /> 
    </tree> 
</field> 

あなたがone2manyモデルのフィールドにドメインを追加すると、その中にあなたが親モデルの値を使用したい場合、あなたは以下の方法でそれを行うことができます。

<field name="company_id" domain="[('id','=',parent.company_id)]" /> 
関連する問題