如何在default_get函数中获取父值?在Odoo 9

时间:2018-06-07 14:17:45

标签: python python-2.7 odoo default-value odoo-9

我想创建一个新的寄存器,但我需要将父字段的值作为子字段的默认值。

我读到您可以通过XML上下文发送父值,每当打开新表单时,都会执行该对象的“default_get”。

我的问题是:

  1. 如何将父值传递给孩子?
  2. 如何在default_get方法中访问这些值?
  3. 我试过这个:

    在XML视图中:

    <field name="my_child_field" context="{'variable1': parent}"/>
    

    在.py文件中:

    @api.model
    def default_get(self, vals):
        context = dict(self.env.context)
        variable1 = context.get('variable1', False)
        print ' variable1'
    

    将False打印为variable1值。

1 个答案:

答案 0 :(得分:0)

我假设你有以下星座:

class MyParent(models.Model):
    _name = "my.parent"

    child_ids = fields.One2many(
        comodel_name="my.child", inverse_name="parent_id")
    my_default_for_child = fields.Char()

class MyChild(models.Model):
    _name = "my.child"

    parent_id = fields.Many2one(comodel_name="my.parent")
    my_field_for_default = fields.Char()

当然还有视图定义。只需将默认值放在上下文中,无需使用或扩展default_get()

<record id="my_parent_form_view" model="my.parent">
    <field name="name">my.parent.form.view</field>
    <field name="model">my.parent</field>
    <field name="arch" type="xml">
        <form>
            <field name="my_default_for_child" />
            <field name="child_ids"
                context="{'default_my_field_for_default': my_default_for_child}">
                <tree editable="bottom">
                    <field name="parent_id" invisible="1" />
                    <field name="my_field_for_default" />
                </tree>
            </field>
        </form>
    </field>
</record>