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

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

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

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

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



  • 需求:一个字段比如货物名称,其值每次总是"主板、电池、电阻、电容、发光二极管、三极管"中的任意几个,每次用户输入嫌麻烦,要求从一个列表中进行选择。
    实现:
        1、对象定义:
    [code]
            _name="goods.name"
            _columns={'name':fields.char('Name',size=32)}

            _name='products'
            _columns={
                            'product_name':fields.char('货物名称',size=64),
                            'goods_name':fields.many2one('goods.name','Goods Name'),
                          }
    [/code]

        2、视图定义:
    [code]
            <form>
                  <field name="goods_name" widget="many2many" invisible="1"  on_change="goods_name_changed(goods_name,product_name)"/>
                  <field name="product_name"/>
                  <button name="selectgoods" string="选择" type="object" icon="gtk-execute" help="选择预先设定的货物名称" />
            </form>
    [/code]

        3、change事件:
    [code]
            def goods_name_changed(self, cr, uid, ids, select_ids, product_name,context=None):
                name=self.pool.get('goods.name').read(cr,uid,select_ids[0][2],['name'])[0]['name']

                p_name=[]
                if product_name:
                    p_name=product_name.split(u',')
                    if name not in p_name:
                        p_name.append(name)
                else:
                    p_name.append(name)

                return {'value': {'goods_name':False,'product_name':u','.join(p_name)}}
    [/code]
        4、js:(FormView)
    [code]
          on_loaded: function  (data) {
              var result = this._super(data);
                if (this.model == 'products') {
                    var self = this;
                    this.$element.find('button').each(function () {
                        if ($(this).find('span').text() == '选择') {
                            $(this).unbind().bind('click', { obj: self }, self.search_create_popup)
                        }
                    })

                }
              return result;
          },
            search_create_popup: function (ev) {
                var self = ev.data.obj;
                self.fields.goods_name.list_view.do_add_record();
            }
    [/code]

          5、效果图:

           



  • 需求:一个字段比如货物名称,其值每次总是"主板、电池、电阻、电容、发光二极管、三极管"中的任意几个,每次用户输入嫌麻烦,要求从一个列表中进行选择。
    实现:
        1、对象定义:
    [code]
            _name="goods.name"
            _columns={'name':fields.char('Name',size=32)}

            _name='products'
            _columns={
                            'product_name':fields.char('货物名称',size=64),
                            'goods_name':fields.many2one('goods.name','Goods Name'),
                          }
    [/code]

        2、视图定义:
    [code]
            <form>
                  <field name="goods_name" widget="many2many" invisible="1"  on_change="goods_name_changed(goods_name,product_name)"/>
                  <field name="product_name"/>
                  <button name="selectgoods" string="选择" type="object" icon="gtk-execute" help="选择预先设定的货物名称" />
            </form>
    [/code]

        3、change事件:
    [code]
            def goods_name_changed(self, cr, uid, ids, select_ids, product_name,context=None):
                name=self.pool.get('goods.name').read(cr,uid,select_ids[0][2],['name'])[0]['name']

                p_name=[]
                if product_name:
                    p_name=product_name.split(u',')
                    if name not in p_name:
                        p_name.append(name)
                else:
                    p_name.append(name)

                return {'value': {'goods_name':False,'product_name':u','.join(p_name)}}
    [/code]
        4、js:(FormView)
    [code]
          on_loaded: function  (data) {
              var result = this._super(data);
                if (this.model == 'products') {
                    var self = this;
                    this.$element.find('button').each(function () {
                        if ($(this).find('span').text() == '选择') {
                            $(this).unbind().bind('click', { obj: self }, self.search_create_popup)
                        }
                    })

                }
              return result;
          },
            search_create_popup: function (ev) {
                var self = ev.data.obj;
                self.fields.goods_name.list_view.do_add_record();
            }
    [/code]

          5、效果图:

           



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



  • good

    可惜还看不懂js 部分


  • 管理员

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


登录后回复
 

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