如何记录和显示它?

问题描述 投票:1回答:2

我正在写一个搜索记录的功能。

当我更改名称字段的文本时,我希望odoo会回复记录并发布它。

我已经提到了odoo原始代码,但它没有用。

@api.multi
    @api.onchange('name')
    def _search_name(self):
        if self._context.get('params')['action'] == 111:
            return {
                'res_id': self.env['yc.purchase'].search([('name', '=', self.name)]).id,
                'view_type': 'form',
                'view_mode': 'form',
                'res_model': 'yc.purchase',
                'view_id': False,
                'type': 'ir.actions.act_window',
            }

我希望网址来自

enter image description here

odoo-11
2个回答
0
投票

您无法在onchange方法中更改模型,无论是单击按钮还是执行操作。您可以在onchange中返回警告。


0
投票

我用一种愚蠢而危险的方式来实现这个想法。

该过程是您想要搜索的名称的类型。单击按钮时,db立即创建一个除名称字段外不包含任何内容的新记录。输入功能后,我将其删除。这样它就不会引起错误。

我的view.xml

        <record model="ir.ui.view" id="process_data_entry_form">
            <field name="name">pde.form</field>
            <field name="model">yc.purchase</field>
            <field name="arch" type="xml">
                <form string="ProcessDataEntry form">
                    <sheet>
                        <group col="8">
                        </group>
                        <div>
                            <button string="search name" type="object" name="yc_purchase_search_name"/>
                        </div>

我的mudule.py

@api.multi
    # @api.onchange("name")
    def yc_purchase_search_name(self,):
        # if url action = 111 execute function
        if self._context.get('params')['action'] == 111:
            # delete the empty record just create by odoo
            to_delete_id = self.env["yc.purchase"].search([('name', '=', self.name)],order='id desc',limit=1).id
            sql = "delete from yc_purchase where id=%d" % to_delete_id
            self._cr.execute(sql)
            id = self.env['yc.purchase'].search([('name', '=', self.name)]).id
            return {
                'res_model': 'yc.purchase',
                'type': 'ir.actions.act_window',
                'res_id': id,
                'view_type': 'form',
                'view_mode': 'form',
                'view_id': self.env.ref('yc_root.process_data_entry_form').id,
                'target': 'inline',
            }

结果如下。 enter image description here

我认为这种方法非常危险。

任何更大的想法?

© www.soinside.com 2019 - 2024. All rights reserved.