
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
单击一个按钮弹出一个form表单,怎么不刷新原表单?
-
已经找到原因,原来这个按钮先执行了默认的create方法,所以才感觉刷新了,怎么让他不要执行create方法呢?
-
我也遇到过类似需求,也发现这个问题,不过odoo框架机制是这样子设置的。我没有找到类似方法,不过我想了下,form表单里面可以自定义html标签,你再插入js,js里面再以json-rpc的方式提交,或者直接调用call方法,或许是一个解决方法。我没有试,你可以试试
-
@萧云飞 我试过用js调用后台方法,但怎么搞都抱错,openerp的js很难理解。我是这样处理的重写了create方法就好了
-
-
@winbo 我想问下,你重新了create方法,是在create方法里面直接调用draft_force_assign_winbo()这个方法吗?今天我试了下,不行呢
-
create 方法里面不需要调用 你自己的方法,他会执行完create 方法继续执行你的这个方法@萧云飞
-
那它还是会调用create方法,创建实例,然后刷新当前表单的数据的。@winbo, 能看下,你特殊处理的那段代码么?
-
@萧云飞 def create(self, cr, uid, vals, context=None):
print "==============winbo=========create"
print vals
super(stock_picking_in_winbo, self).write(cr, uid, picking_id, vals, context=context)
# self.draft_force_assign_winbo(self, cr, uid,picking_id)return picking_id def draft_force_assign_winbo(self, cr, uid, ids, context=None): if context is None: context = {} stock_obj = self.browse(cr, uid, ids) """Open the partial picking wizard""" context.update({ 'active_model': self._name, 'active_ids': ids, 'active_id': len(ids) and ids[0] or False, 'ref_id': 13 }) mod_obj = self.pool.get('ir.model.data') res = mod_obj.get_object_reference(cr, uid, 'starmerx_stock', 'starmerx_stock_partial_picking_form') # raise osv.except_osv(_('无法保存 !'), _('字段值有错误!')) return { 'view_type': 'form', 'view_mode': 'form', 'view_id': [res and res[1] or False], 'res_model': 'stock.partial.picking', 'type': 'ir.actions.act_window', 'target': 'new', 'context': context, 'nodestroy': True, }
我的这个场景可能跟你的不一样,我之前也以为要在create里面调用我的方法,但其实不用
-
如果你的按钮的类型是
object
,在点击的时候会调用read
方法来刷新你的FormA,如果你的按钮类型是action
,则可以不刷新FormA,也能弹出FormB。例如:
<button name="%(action_view_sale_advance_payment_inv)d" string="Create Invoice" type="action" class="btn-primary" attrs="{'invisible': [('invoice_status', '!=', 'to invoice')]}"/>
-
-
-
@Joshua 谢谢你的讲解,这个action在某些场景不适用。某些条件成立时,才弹出一个窗口,其它条件就执行另外的代码;或者根据不同的条件,处理不同的数据后,弹出不同的窗口(可以定义多个button,但是attrs条件框处理能力毕竟有限)