无法在OpenERP中继承HR.Employee
请告诉我我的错误在哪里。我需要添加一个新的字段,叫做 kanganyname
(经理名字)。但是它给我报错了。我按照开发者指南进行了修改:
这是我的 view.xml 文件
<record model="ir.ui.view" id="namelist_dailyupdate">
<field name="name">checkroll.daily.update.form</field>
<field name="model">checkroll.daily.update</field>
<field name="inherit_id" ref="hr.view_employee_form" />
<field name="type">form</field>
<field name="arch" type="xml">
<form string="daily_update">
<field name="kanganyname" />
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_inherit_ex">
<field name="name">checkroll.daily.update.form</field>
<field name="model">checkroll.daily.update</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
</record>
这是我的模型类。
class dailyupdate(osv.osv):
_name = "checkroll.daily.update"
_inherit = "hr.employee"
_description = "This table is for daily update"
_columns = {
'kanganyname': fields.char('Kangany Name', size=256, required=True)
}
dailyupdate()
这是我的错误信息:
追踪记录(最近的调用在最前面):
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/sql_db.py",第 226 行,在 execute 中
res = self._obj.execute(query, params)
IntegrityError: 列 "res_model" 中的空值违反了非空约束
2013-03-18 04:10:16,830 4709 错误 OpenERP_DB openerp.tools.convert: 在 /home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/checkroll/checkroll_view.xml 的第 179 行解析错误:
checkroll.daily.update.form
checkroll.daily.update
form
form
追踪记录(最近的调用在最前面):
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/tools/convert.py",第 847 行,在 parse 中
self._tags[rec.tag](self.cr, rec, n)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/tools/convert.py",第 814 行,在 _tag_record 中
id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/base/ir/ir_model.py",第 964 行,在 _update 中
res_id = model_obj.create(cr, uid, values, context=context)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/orm.py",第 4434 行,在 create 中
cr.execute('insert into "'+self._table+'" (id'+upd0+") values ("+str(id_new)+upd1+')', tuple(upd2))
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/sql_db.py",第 161 行,在 wrapper 中
return f(self, *args, **kwargs)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/sql_db.py",第 226 行,在 execute 中
res = self._obj.execute(query, params)
IntegrityError: 列 "res_model" 中的空值违反了非空约束
2013-03-18 04:10:16,835 4709 错误 OpenERP_DB openerp.netsvc: 列 "res_model" 中的空值违反了非空约束
追踪记录(最近的调用在最前面):
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/netsvc.py",第 293 行,在 dispatch_rpc 中
result = ExportService.getService(service_name).dispatch(method, params)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/service/web_services.py",第 425 行,在 dispatch 中
return fn(*params)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/service/web_services.py",第 436 行,在 exp_authenticate 中
res_users = pooler.get_pool(db).get('res.users')
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/pooler.py",第 49 行,在 get_pool 中
return get_db_and_pool(db_name, force_demo, status, update_module)[1]
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/pooler.py",第 33 行,在 get_db_and_pool 中
registry = RegistryManager.get(db_name, force_demo, status, update_module)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/modules/registry.py",第 192 行,在 get 中
update_module)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/modules/registry.py",第 218 行,在 new 中
openerp.modules.load_modules(registry.db, force_demo, status, update_module)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/modules/loading.py",第 344 行,在 load_modules 中
processed = load_marked_modules(cr, graph, states_to_load, force, status, report, loaded_modules, update_module)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/modules/loading.py",第 259 行,在 load_marked_modules 中
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/modules/loading.py",第 190 行,在 load_module_graph 中
load_update_xml(module_name, idref, mode)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/modules/loading.py",第 74 行,在
load_update_xml = lambda *args: _load_data(cr, *args, kind='update_xml')
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/modules/loading.py",第 127 行,在 _load_data 中
tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/tools/convert.py",第 954 行,在 convert_xml_import 中
obj.parse(doc.getroot())
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/tools/convert.py",第 847 行,在 parse 中
self._tags[rec.tag](self.cr, rec, n)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/tools/convert.py",第 814 行,在 _tag_record 中
id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/base/ir/ir_model.py",第 964 行,在 _update 中
res_id = model_obj.create(cr, uid, values, context=context)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/orm.py",第 4434 行,在 create 中
cr.execute('insert into "'+self._table+'" (id'+upd0+") values ("+str(id_new)+upd1+')', tuple(upd2))
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/sql_db.py",第 161 行,在 wrapper 中
return f(self, *args, **kwargs)
文件 "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/sql_db.py",第 226 行,在 execute 中
res = self._obj.execute(query, params)
IntegrityError: 列 "res_model" 中的空值违反了非空约束
2013-03-18 04:10:16,847 4709 信息 OpenERP_DB werkzeug: 127.0.0.1 - - [18/Mar/2013 04:10:16] "POST /web/session/authenticate HTTP/1.1" 200 -
1 个回答
你的 XML 代码在继承方面完全不对。
<record model="ir.ui.view" id="namelist_dailyupdate">
<field name="name">checkroll.daily.update.form</field>
<field name="model">checkroll.daily.update</field>
<field name="inherit_id" ref="hr.view_employee_form" />
<field name="type">form</field>
<field name="arch" type="xml">
<form string="daily_update">
<field name="kanganyname" />
</form>
</field>
</record>
在你的代码中,你没有指定想要添加新字段的位置。你可以这样定义你的代码:
<record model="ir.ui.view" id="namelist_dailyupdate">
<field name="name">checkroll.daily.update.form</field>
<field name="model">checkroll.daily.update</field>
<field name="inherit_id" ref="hr.view_employee_form" />
<field name="type">form</field>
<field name="arch" type="xml">
<form string="daily_update">
<xpath expr="//field[@name='name']" position="after">
<field name="kanganyname" />
</xpath>
</form>
</field>
</record>
或者
checkroll.daily.update.form checkroll.daily.update form
你需要定义想要添加这个字段的位置,可以使用 xpath 或者 field 标签来实现。
希望这能帮到你。