Как получить родительские значения в функции default_get?В Оду 9 - PullRequest
0 голосов
/ 07 июня 2018

Я хочу создать новый регистр, но мне нужно поместить значение родительского поля в качестве значения по умолчанию дочернего поля.

Я прочитал, что вы можете отправить родительские значения через контекст из XML и всякий раз, когда открывается новая форма, будет выполнено «default_get» этого объекта.

Мои вопросы:

  1. Как я могу передатьродительские ценности для ребенка?
  2. Как мне получить доступ к этим значениям в методе default_get?

Я пробовал это:

В представлении 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 голосов
/ 07 июня 2018

Позвольте мне предположить, что у вас есть следующее созвездие:

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>
...