首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在从one2many字段创建记录时设置默认值- odoo

在从one2many字段创建记录时设置默认值- odoo
EN

Stack Overflow用户
提问于 2016-12-16 13:19:41
回答 2查看 8K关注 0票数 1

在从one2many字段创建记录时,我希望为多个字段设置默认值,因为默认值将从父模型中获取。

Odoo模型结构

代码语言:javascript
运行
复制
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表单视图

代码语言:javascript
运行
复制
<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>

有人能建议我,在这种情况下我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-24 07:20:28

我知道怎么做了。

为了在one2many字段中添加记录时直接设置默认值,我们需要在上下文中设置前缀default_field_name : value的值。 context="{'default_currency_id‘:currency_id,'default_company_id’:company_id}" 注意:在创建新记录时,active_id不可用,如果在one2many模型中提供值,则active id将不存在。只有在保存父记录之后才能访问它。

解决方案:

代码语言:javascript
运行
复制
<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模型的字段中添加域,并且希望使用父模型的值,则可以通过以下方式进行。

代码语言:javascript
运行
复制
<field name="company_id" domain="[('id','=',parent.company_id)]" />
票数 4
EN

Stack Overflow用户

发布于 2018-04-24 07:25:34

若要将父值发送到one2many字段,请在one2many字段上定义上下文,使用上下文附加"default_“作为所需字段的前缀,例如"default_state”作为键,以及值使用父表字段名。

代码语言:javascript
运行
复制
<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>

在上面的代码片段中,我们有one2many字段,在该字段中,我们使用键值定义上下文。在这里,键名将从"default_“开始,与字段名相比,该值应该是我们希望在one2many弹出窗体视图中显示的父表字段名。关于更多信息,http://learnopenerp.blogspot.com/2018/01/get-parent-form-value-in-one2many-form.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41185336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档