使用on_change更改选择字段的值

时间:2016-08-16 08:27:50

标签: python openerp

我正在尝试使用on_change更改选择字段的值。我有以下代码。

.XML

<field name="product_id" on_change="onchange_partner_id_override(product_id, context)"

的.py

class sale_order_line(osv.osv):
    _inherit = "sale.order.line"
    _columns = {
        'product_id': fields.many2one('product.product', "Product"),
        'price_select': fields.selection(SELECT_PRICE, "Unit Price"),
    }
    def product_id_change_override(self, cr, uid, ids, product, context=None):
        result = []
        product_obj = self.pool.get('product.product')
        product_obj = product_obj.browse(cr, uid, product, context=context_partner)

        global SELECT_PRICE
        SELECT_PRICE = [
            ('sale_price', product_obj.list_price),
            ('dist_price', product_obj.distributor_price),
            ('emp_price', product_obj.employee_price),
        ]

        # How could I change the value of my selection field 'price_select'

        return {'value': result}

但我不知道如何在我的选择字段中附加此数据的语法。 请有人帮助我!

1 个答案:

答案 0 :(得分:2)

您需要覆盖product_id_change方法,并在price_select dict中指定value字段的值:

def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
        uom=False, qty_uos=0, uos=False, name='', partner_id=False,
        lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None):

    res = super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product, qty,
        uom, qty_uos, uos, name, partner_id,
        lang, update_tax, date_order, packaging, fiscal_position, flag, context)

    res['value'].update({'price_select': 'emp_price'})

    return res