Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

一个字段可以由用户从预先设置的一组值中选择来设置该字段的值



  • 需求:一个字段比如货物名称,其值每次总是"主板、电池、电阻、电容、发光二极管、三极管"中的任意几个,每次用户输入嫌麻烦,要求从一个列表中进行选择。<br />实现:<br />    1、对象定义:<br />[code]<br />        _name="goods.name"<br />        _columns={'name':fields.char('Name',size=32)}<br /><br />        _name='products'<br />        _columns={<br />                        'product_name':fields.char('货物名称',size=64),<br />                        'goods_name':fields.many2one('goods.name','Goods Name'),<br />                      }<br />[/code]<br /><br />    2、视图定义:<br />[code]<br />        <form><br />              <field name="goods_name" widget="many2many" invisible="1"  on_change="goods_name_changed(goods_name,product_name)"/><br />              <field name="product_name"/><br />              <button name="selectgoods" string="选择" type="object" icon="gtk-execute" help="选择预先设定的货物名称" /><br />        </form><br />[/code]<br /><br />    3、change事件:<br />[code]<br />        def goods_name_changed(self, cr, uid, ids, select_ids, product_name,context=None):<br />            name=self.pool.get('goods.name').read(cr,uid,select_ids[0][2],['name'])[0]['name']<br /><br />            p_name=[]<br />            if product_name:<br />                p_name=product_name.split(u',')<br />                if name not in p_name:<br />                    p_name.append(name)<br />            else:<br />                p_name.append(name)<br /><br />            return {'value': {'goods_name':False,'product_name':u','.join(p_name)}}<br />[/code]<br />    4、js:(FormView)<br />[code]<br />      on_loaded: function  (data) {<br />          var result = this._super(data);<br />            if (this.model == 'products') {<br />                var self = this;<br />                this.$element.find('button').each(function () {<br />                    if ($(this).find('span').text() == '选择') {<br />                        $(this).unbind().bind('click', { obj: self }, self.search_create_popup)<br />                    }<br />                })<br /><br />            }<br />          return result;<br />      },<br />        search_create_popup: function (ev) {<br />            var self = ev.data.obj;<br />            self.fields.goods_name.list_view.do_add_record();<br />        }<br />[/code]<br /><br />      5、效果图:<br /><br />       



  • 需求:一个字段比如货物名称,其值每次总是"主板、电池、电阻、电容、发光二极管、三极管"中的任意几个,每次用户输入嫌麻烦,要求从一个列表中进行选择。<br />实现:<br />    1、对象定义:<br />[code]<br />        _name="goods.name"<br />        _columns={'name':fields.char('Name',size=32)}<br /><br />        _name='products'<br />        _columns={<br />                        'product_name':fields.char('货物名称',size=64),<br />                        'goods_name':fields.many2one('goods.name','Goods Name'),<br />                      }<br />[/code]<br /><br />    2、视图定义:<br />[code]<br />        <form><br />              <field name="goods_name" widget="many2many" invisible="1"  on_change="goods_name_changed(goods_name,product_name)"/><br />              <field name="product_name"/><br />              <button name="selectgoods" string="选择" type="object" icon="gtk-execute" help="选择预先设定的货物名称" /><br />        </form><br />[/code]<br /><br />    3、change事件:<br />[code]<br />        def goods_name_changed(self, cr, uid, ids, select_ids, product_name,context=None):<br />            name=self.pool.get('goods.name').read(cr,uid,select_ids[0][2],['name'])[0]['name']<br /><br />            p_name=[]<br />            if product_name:<br />                p_name=product_name.split(u',')<br />                if name not in p_name:<br />                    p_name.append(name)<br />            else:<br />                p_name.append(name)<br /><br />            return {'value': {'goods_name':False,'product_name':u','.join(p_name)}}<br />[/code]<br />    4、js:(FormView)<br />[code]<br />      on_loaded: function  (data) {<br />          var result = this._super(data);<br />            if (this.model == 'products') {<br />                var self = this;<br />                this.$element.find('button').each(function () {<br />                    if ($(this).find('span').text() == '选择') {<br />                        $(this).unbind().bind('click', { obj: self }, self.search_create_popup)<br />                    }<br />                })<br /><br />            }<br />          return result;<br />      },<br />        search_create_popup: function (ev) {<br />            var self = ev.data.obj;<br />            self.fields.goods_name.list_view.do_add_record();<br />        }<br />[/code]<br /><br />      5、效果图:<br /><br />       



  • 嗯, 虽然很不理解这种需求,但是还是顶一个...



  • good<br /><br />可惜还看不懂js 部分


  • 管理员

    谢谢楼主分享。目测是6.1的?


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待