odoo 由动作传递默认值给新的模型

Posted qianxunman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了odoo 由动作传递默认值给新的模型相关的知识,希望对你有一定的参考价值。

新的模型需要设置方法:

    @api.model
    def default_get(self, fields):
        result = super(PortalShare, self).default_get(fields)
        result[‘res_model‘] = self._context.get(‘active_model‘)
        result[‘res_id‘] = self._context.get(‘active_id‘)
        record = self.env[result[‘res_model‘]].browse(result[‘res_id‘])
        result[‘share_link‘] = record.get_base_url() + record._get_share_url(redirect=True)
        return result

xml 中设置绑定关系:

        <record id="binding_reserved_rework" model="ir.actions.act_window">
            <field name="name">创建返工通知单</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">owl.reserved.rework</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="view_id" ref="owl_reserved_rework_view_form"/>
            <field name="binding_model_id" ref="stock.model_stock_quant"/>
        </record>

如何在明细行中设置默认值:

    @api.model
    def default_get(self, fields):
        result = super().default_get(fields)
        logging.info(‘result:{}‘.format(result))
        line_ids = self.rework_line_ids.create(
            dict(
                product_id=1,
                product_period=1,
            )
        )
        result[‘rework_line_ids‘] = [(6, 0, line_ids.mapped(‘id‘))]

        return result

https://www.odoo.com/pt_BR/forum/ajuda-1/question/how-to-insert-value-to-a-one2many-field-in-table-with-create-method-28714
Avatar
nazarii
22 agosto 2013
Best Answer
This may help you:

(0, 0, { values }) link to a new record that needs to be created with the given values dictionary
(1, ID, { values }) update the linked record with id = ID (write values on it)
(2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)
(3, ID) cut the link to the linked record with id = ID (delete the relationship between the two objects but does not delete the target object itself)
(4, ID) link to existing record with id = ID (adds a relationship)
(5) unlink all (like using (3,ID) for all linked records)
(6, 0, [IDs]) replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)

If you want to link new record to existing wizards than yes, you need to use (6, 0, [IDS]). But if you want to create new wizards on the fly and link to this record than use ‘fee_ids‘: [(0, 0, values1), (0, 0, values2) ]












以上是关于odoo 由动作传递默认值给新的模型的主要内容,如果未能解决你的问题,请参考以下文章

如何将特定的 ListTile 变量传递给新的页面路由 onTap?

无法将 autoID 传递给新的 VC

将蓝牙连接传递给新的 Activity

模型绑定与验证笔记

如何使用新的导航架构组件从扩展 BroadcastReceiver 的类导航到片段

[JavaScript]解构赋值详解