1

one2many フィールドからレコードを作成する際に、複数のフィールドのデフォルト値を設定したいのですが、そのデフォルト値は親モデルから取得されます。

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>

誰でも私に提案できますか、その場合はどうすればよいですか?

4

2 に答える 2

4

やり方が分かった。

one2manyフィールドに レコードを追加する際にデフォルト値を直接設定する には、接頭辞default_field_name : valueを使用してコンテキストで値を設定する必要があります。

context="{'default_currency_id' : currency_id, 'default_company_id' : company_id}"

注: 新しいレコードを作成している間は active_id を使用できません。その新しいレコードで one2many モデルに値を指定すると、アクティブな 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)]" />
于 2016-12-24T07:20:28.477 に答える