【问题标题】:odoo: error creating new form view : Field(s) `arch` failed against a constraint: Invalid view definitionodoo:创建新表单视图时出错:字段“arch”因约束而失败:视图定义无效
【发布时间】:2015-05-06 13:58:16
【问题描述】:

我想创建与新数据模型关联的新表单视图,我创建一个具有子菜单“菜单”的新菜单项“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 因约束失败:无效的视图定义 错误详情: 元素'

我的代码有什么问题?

【问题讨论】:

    标签: formview parse-error datamodel odoo-8


    【解决方案1】:

    只需在您的 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 中创建模块,然后将新表单 Attribute 添加为 version="7.0" 在您的 form您的视图的标签。 如果它在 odoo 8.0 中,则不需要这样做。

    【讨论】:

      【解决方案2】:

      我遇到了同样的错误,在我的情况下,这是因为我的 .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()
      

      我认为这种方式可行

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-18
        • 1970-01-01
        相关资源
        最近更新 更多