我是OpenERP的新手,对编程缺乏经验。我试图从文本字段上的onchange事件获得任何响应。其他人报告说该代码有效,并指出该字段必须失去焦点,因此它可能是我身边的OS /浏览器/服务器相关问题。
我尝试了很多变量组合,因为有关论坛,文档和帮助网站(如stackoverflow)的建议不同。
查看:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_product_form_custom">
<field name="name">CRM - Leads Calendar.inherit</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_case_form_view_leads" />
<field name="arch" type="xml">
<field name="partner_name" on_change="testchange(contact_name)" /> <!-- Note: position="replace" works, have tried partner_name, context and combinations here. -->
<!-- <field name="contact_name" /> -->
</field>
</record>
</data>
</openerp>
控制器:
from openerp.osv import fields, osv # import crm/leads/view as well?
class modcontroller(osv.osv):
"""Attempting to change contact_name onchange partner_name (Company Name).
"""
_inherit = "crm.lead"
_columns = {
'contact_name': fields.char('Contact Name', size=64, readonly=False),
'partner_name': fields.char("Customer Name", size=64, help='Got your nose!', select=1, readonly=False),
}
_defaults = {
}
def testchange(self, cr, uid, ids, contact_name): #partner_name, context=None
# return {'warning': {'title': 'test', 'message': 'hello world'}}
# raise Exception("Are you still there?")
return {'value': {'contact_name': 'testing'}}
modcontroller()
正如你所看到的那样,我尝试了提出异常并显示警告对话框,但都没有奏效。它确实检测到语法错误。
操作系统:Windows 7 64位 OpenERP 7.0最新稳定版包括postgresql。 浏览器尝试过:Chrome和Firefox。没有NoScript。
作为旁注:我首先在Ubuntu 12.04 VM上使用OpenERP尝试OpenERP,但我遇到了100%CPU负载问题,这些问题几乎使操作系统崩溃(每秒0.5帧鼠标移动)。
相关网页的内容: Onchange function in Openerp https://www.openerp.com/files/memento/OpenERP_Technical_Memento_latest.pdf(参见第6页,动态视图) http://forum.openerp.com/forum/topic34853.html
答案 0 :(得分:1)
由于您继承了视图crm.crm_case_form_view_leads
,因此您必须使用属性position = replace/after/before
属性指定视图中必须继承的字段。查看代码,我认为您正在尝试向CRM中的字段on_change
添加partner_name
事件。这可以通过以下方式实现:
<record model="ir.ui.view" id="view_product_form_custom">
<field name="name">CRM - Leads Calendar.inherit</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_case_form_view_leads" />
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_name']" position="attributes">
<attribute name="on_change">testchange(partner_name)</attribute>
</xpath>
</field>
</record>
由于字段partner_name
和contact_name
已存在于模型crm.lead
中,因此您无需再次继承模型crm.lead
并添加这些字段。所以你可以省略
_columns = {
'contact_name': fields.char('Contact Name', size=64, readonly=False),
'partner_name': fields.char("Customer Name", size=64, help='Got your nose!', select=1, readonly=False),
}
你的python文件的一部分。