odoo:创建新表单视图时出错:字段`arch`对约束失败:视图定义无效

时间:2015-05-06 13:58:17

标签: formview parse-error datamodel odoo-8

我想创建与新数据模型相关联的新表单视图,我创建了一个新菜单项“menu1”,它有一个子菜单“菜单”,然后,我想自定义操作视图。这是我的代码:

我的xml文件:

我的数据模型:

from openerp.osv import fields, osv

class hr_cutomization(osv.osv):

_inherit = "hr.employee"

_columns = {
  'new_field_ID': fields.char('new filed ID',size=11)
}

_default={
  'new_field_ID':0
}

hr_cutomization()

class hr_newmodel(osv.osv):

_name = "hr.newmodel"

_columns = {
  'field1': fields.char('new filed1',size=11),
  'field2': fields.char('new filed2',size=11)
}

_default={
  'field1':0
}

hr_newmodel()

当我更新我的模块时,我收到了这个错误:

  

ParseError:“ValidateError   字段arch对约束失败:视图定义无效   错误详情:   元素'

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:0)

只需更新您的xml文件中的查看操作,就像这样

<record id="new_action" model="ir.actions.act_window">
        <field name="name">New</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">hr.newmodel</field>
        <field name="view_type">form</field>
        <field name="view_mode">form,tree</field>
        <field name="view_id" ref="view_new_form"/>
    </record>

只需更新你的py文件

from openerp.osv import fields, osv

class hr_cutomization(osv.osv):

_inherit = "hr.employee"

_columns = {
  'new_field_ID': fields.char('new filed ID',size=11)
}

_default={
  'new_field_ID':'0'
}

hr_cutomization()

class hr_newmodel(osv.osv):

_name = "hr.newmodel"

_columns = {
  'field1': fields.char('new filed1',size=11),
  'field2': fields.char('new filed2',size=11)
}

_default={
  'field1':'0'
}

hr_newmodel()

在此.py中,您将被指定为char字段,但您使用_defaults作为0(作为整数) 你必须将它作为字符传递给_default属性中的整数。

您正在OpenERP 7.0中创建模块,然后在表单中添加新表单属性作为 version =“7.0”你的观点的标记。 如果它在odoo 8.0中,则不需要这样做。

答案 1 :(得分:0)

我得到了同样的错误,在我的情况下,这是因为.py文件中的缩进错误。尝试以正确的方式进行缩进,如下所示:

from openerp.osv import fields, osv

class hr_cutomization(osv.osv):

    _inherit = "hr.employee"

    _columns = {
      'new_field_ID': fields.char('new filed ID',size=11)
    }

    _default={
      'new_field_ID':'0'
    }

    hr_cutomization()

class hr_newmodel(osv.osv):

    _name = "hr.newmodel"

    _columns = {
      'field1': fields.char('new filed1',size=11),
      'field2': fields.char('new filed2',size=11)
    }

    _default={
      'field1':'0'
    }

    hr_newmodel()

我认为这种方式可行