从One2many字段创建记录时设置默认值-Odoo



我想在从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>

任何人都可以建议我,在这种情况下我该怎么办?

我得到了如何做的方式。

为了在添加记录时直接设置默认值 One2many 字段,我们需要在上下文中设置值 default_field_name:value

context =&quot; {'default_currency_id':crurnern_id,'default_company_id':company_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)]" />

将父值发送到XML中的One2many字段上的上下文,将上下文附加" default_"作为所需字段的前缀,例如。" default_state"作为键,用于值,使用父表字段名称。

<field name="external_evaluation_ids" context="{'default_state':state}">
 <tree>
  <field name="state"/> <!--newly created field in one2many table-->
  <field name="child_table_field1"/>
  <field name="child_table_field2"/>
  <field name="child_table_field2"/>
 </tree>
</field>

在上面的代码段中,我们有一个2many字段,在该字段中,我们用键值定义上下文。键的名称将从" default_"开始,而不是字段名称,该值应该是我们要在One2many弹出式表单视图中显示的父表字段名称。有关更多信息,http://learnopenerp.blogspot.com/2018/01/get-parent-form-value-in-on-one2many-form.html

最新更新