修改Many2One字段的链接打开方式

OE 6中, Many2One字段的只读显示方式如下:


点击时, 是在本窗口打开这个对象的. 有时候非常的恼人. 很多用户不知道浏览器的前进后退, 所以还要从头找回去.

想想, 不如改为浮动窗口的好点.

打开浏览器的开发工具:


链接都是"oe_form_uri" class. 在web模块的xml模版里, 发现这个class是 FieldURI.readonly 在使用.
转而在web模块所带的一大堆js文件里搜索 "FieldURI". 发现一大堆的界面对象在使用这个模版.
忽然想到, 应该有一个派生类, 名字类似于 many2one, 结果找到 view_page.js, line 171里.
应该是打开一个新的浮动窗口, target不能是current.
修改之
line 171:


            var real_set_value = function(rval) {
                self.value = rval;
                self.$element.find('a')
                     .unbind('click')
                     .text(rval ? rval[1] : '')
                     .click(function () {
                        self.do_action({
                            type: 'ir.actions.act_window',
                            res_model: self.field.relation,
                            res_id: self.value[0],
                            context: self.build_context(),
                            views: [[false, 'page'], [false, 'form']],
                            target: 'new'
                        });
                        return false;
                     });

打完收工.
还没有验证是否影响到其他功能.

微博 @杨振宇_  欢迎交流.

Odoo中,可以通过Many2one字段Many2many字段传递值。这可以通过使用Odoo的特殊语法和API来实现。 具体方法如下: 1. 在Many2one字段对应的模型中,添加一个Many2many字段,用于存储传递的值。例如,我们在模型A中添加一个Many2many字段,用于存储传递给模型B的值。 ```python class ModelA(models.Model): _name = 'model.a' name = fields.Char(string='Name') value_ids = fields.Many2many(comodel_name='model.b', string='Values') ``` 2. 在Many2one字段对应的模板中,添加一个Many2many字段的下拉菜单,用于选择传递的值。这可以通过使用Odoo的特殊语法和API来实现。例如,我们在模板中添加一个下拉菜单,用于选择传递给模型B的值。 ```xml <field name="value_ids" widget="many2many_tags"/> ``` 3. 在Many2one字段对应的模型中,添加一个按钮,用于触发传递操作。按钮的onClick方法中,通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录中。例如,我们在模型A中添加一个按钮,用于触发传递操作。 ```python @api.multi def transfer_values(self): for record in self: values = record.value_ids.ids record.other_model_id.write({'many2many_field': [(6, 0, values)]}) ``` 在上述代码中,我们通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录中。 通过上述方法,我们可以实现Many2one字段Many2many字段传递值的操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值