Python Onchange字段不工作OpenERP
我试图在sale.order的树状视图中显示一个名为Python Onchange字段不工作OpenERP,python,xml,treeview,openerp,odoo,Python,Xml,Treeview,Openerp,Odoo,我试图在sale.order的树状视图中显示一个名为phone的res.partner字段 但它没有显示任何内容,只显示没有数据的字段名称。这是我在销售订单上的代码 phone : fields.char('Telefono del Cliente'), 此字段的Onchange函数: def onchange_phone(self, cr, uid, ids, phone, context=None): res = {} if phone: obj = self.po
phone
的res.partner
字段
但它没有显示任何内容,只显示没有数据的字段名称。这是我在销售订单上的代码
phone : fields.char('Telefono del Cliente'),
此字段的Onchange函数:
def onchange_phone(self, cr, uid, ids, phone, context=None):
res = {}
if phone:
obj = self.pool.get('res.partner')
browse(cr, uid, phone)
res['phone'] = obj.phone
return {'value' : res}
在res.partner
上,该字段也称为phone
,这显然是客户的电话,我需要在sale.order
treeview上显示它,这是我的sale\u view.xml
上的代码:
<field name="phone" on_change="onchange_phone(phone)"/>
有什么想法吗
提前感谢。作为建议,如果您想要合作伙伴的电话号码,则不应在“电话”字段中创建“更改”。您可以通过两种方式获取电话号码 第一种方法也是最好的方法,在sale.order中,
onchange\u partner\u id()
方法是他们的,您需要覆盖该方法并用合作伙伴的电话号码更新VAL
第二种方法也是很长的方法,您可以覆盖sale.order的create()
方法和write()
方法
create()方法技巧:
- 在create()方法中,可以从上下文中获取合作伙伴id。例如
vals.get('partner\u id')
- 在write()方法中,您拥有已创建记录的id,所以只需浏览该记录并写入合作伙伴的电话号码
请注意,您不应该在基本模块上执行此操作,而是应该创建自己的模块并将其继承到sale.order模型。更重要的是,onchange不会在树视图上工作(如您所建议的),但您可以轻松地在树上显示它-您必须首先使用提供的onchange将其放在表单上,然后修改树视图以显示电话号码。根据您的说明,您已指定继承。因此在onchange函数中,也请指定调用super()这样我们就不会更改onchange\u partner\u id函数
def onchange_partner_id(self, cr, uid, ids, part, context=None):
if not part:
return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'payment_term': False, 'fiscal_position': False}}
part = self.pool.get('res.partner').browse(cr, uid, part, context=context)
addr = self.pool.get('res.partner').address_get(cr, uid, [part.id], ['delivery', 'invoice', 'contact'])
pricelist = part.property_product_pricelist and part.property_product_pricelist.id or False
payment_term = part.property_payment_term and part.property_payment_term.id or False
fiscal_position = part.property_account_position and part.property_account_position.id or False
dedicated_salesman = part.user_id and part.user_id.id or uid
phone = part.phone or False
val = {
'partner_invoice_id': addr['invoice'],
'partner_shipping_id': addr['delivery'],
'payment_term': payment_term,
'fiscal_position': fiscal_position,
'user_id': dedicated_salesman,
'phone': phone,
}
if pricelist:
val['pricelist_id'] = pricelist
return {'value': val}