XML 设计 OpenErp
Posted
技术标签:
【中文标题】XML 设计 OpenErp【英文标题】:XML design OpenErp 【发布时间】:2013-04-07 01:11:25 【问题描述】:我的模块 certificados.py 有一个 xml,.py 模块如下:
class certificados(osv.osv):
_name = 'certificados.certificados'
_columns =
'Item' : fields.integer('Item'), 'Registro Numero' : fields.integer('Registro Numero'),
'Fecha de Emision': fields.date('Fecha de Emision', required=True, select=True),
'Fecha de Solicitud': fields.date('Fecha de Solicitud', required=True, select=True),
'Fecha del Documento': fields.date('Fecha del Documento', required=True, select=True),
'Vigencia' : fields.integer('Vigencia'),
'Codigo Arancelario' : fields.integer('Codigo Arancelario'),
'cert_ids' : fields.one2many('purchase.requisition.line','requisition_id','Products to Purchase',states='done': [('readonly', True)]),
'Descripcion Arancelaria' : fields.char('Descripcion Arancelaria', size=42, required = True, translate = True),
'Especificaciones Tecnicas' : fields.char('Especificaciones Tecnicas', size=60, required = True, translate = True),
'Cantidad' : fields.float('Cantidad'), 'Unidad de Medida': fields.many2one('product.uom', 'Unidad de Medida'),
'Precio Unitario Declarado' : fields.float('Precio Unitario Declarado'), 'Moneda' : fields.many2one('res.currency', 'Moneda'),
'Valor En Divisas' : fields.float('Valor En Divisas'),
'Cantidad Consumida' : fields.float('Cantidad Consumida'), 'Cantidad Disponible' : fields.float('Cantidad Disponible'),
'notas' : fields.text('Notas'),
certificados()
我正在尝试对此模块进行一些设计,使其显示为采购申请,我的意思不仅仅是记录,还有一些“工作表”和“h1”以及“笔记本”之类的东西,代码我的“表单”部分中的模块采用以下形式:
<record id="student_certificados_form" model="ir.ui.view">
<field name="name">certificados.result.form</field>
<field name="model">certificados.certificados</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Introducir los datos" >
<field name="Codigo Arancelario" />
<field name="Descripcion Arancelaria" />
<field name="Especificaciones Tecnicas" />
<field name="Cantidad" /><field name="Unidad de Medida" />
<field name="Precio Unitario Declarado" /><field name="Moneda" />
<field name="Valor En Divisas" /><field name="Moneda" />
<field name="Cantidad Consumida" />
<field name="Cantidad Disponible" />
</form>
</field>
</record>
我做了一些修改,但我不知道错误在哪里,修改后的版本是:
<record id="student_certificados_form" model="ir.ui.view">
<field name="name">certificados.result.form</field>
<field name="model">certificados.certificados</field>
<field name="arch" type="xml">
<form string="Introducir los datos" version="7.0">
<sheet>
<div class="oe_edit_only">
<label for="Registro Numero" class="oe_inline"/>
</div>
<h1>
<field name="Registro Numero" class="oe_inline"/>
</h1>
<group>
<group>
<field name="Fecha de Emision"/>
<field name="Fecha de Solicitud"/>
</group>
<group>
<field name="Fecha del Documento"/>
<field name="Vigencia"/>
</group>
</group>
<notebook>
<page string="Certificados">
<field name="
<tree string="certificados_certificados_tree" editable="bottom">
<field name="Item" />
<field name="Codigo Arancelario" />
<field name="Descripcion Arancelaria" />
<field name="Especificaciones Tecnicas" />
<field name="Precio Unitario Declarado" />
<field name="Valor En Divisas" />
<field name="Cantidad Consumida" />
<field name="Cantidad Disponible" />
</tree>
<form string="Certificados" version="7.0">
<group>
<field name="Codigo Arancelario" />
<field name="Especificaciones Tecnicas"/>
<field name="Valor En Divisas" />
</group>
</form>
<separator string="Certificados"/>
<field name="Item" readonly="1">
<tree string="Certificados" >
<field name="Codigo Arancelario" />
<field name="Descripcion Arancelaria" />
<field name="Especificaciones Tecnicas" />
<field name="Cantidad" /><field name="Unidad de Medida" />
<field name="Precio Unitario Declarado" /><field name="Moneda" />
<field name="Valor En Divisas" /><field name="Moneda" />
<field name="Cantidad Consumida" />
<field name="Cantidad Disponible" />
</tree>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
我知道这里有一些错字,但找不到,它给了我无效的 XML 架构,这通常被称为 xml 字段中的不匹配。
谁能告诉我错误在哪里?
提前致谢
【问题讨论】:
【参考方案1】:你的py文件中的字段定义可能有问题。
您正在定义这样的字段:'Codigo Arancelario' : fields.integer('Codigo Arancelario')
,但它必须像这样'Codigo_Arancelario' : fields.integer('Codigo Arancelario')
。这就是您面临错误的原因。
所以在 py 和 xml 中更改你的字段定义,然后尝试一下。
我希望它会工作。
【讨论】:
【参考方案2】:即使在将您的字段名称从“Codigo Arancelario”改进为“Codigo_Arancelario”之后, 你仍然会从上面的代码中得到一个错误。我可以分析,可能是您忘记了,或者您不知道对于“one2many”字段类型,必须有many2one 字段将该对象引用到另一个对象。
Here in your module's scenario, You have to define many2one field in purchase.requisition.line for 'cert_ids'.
Try This :
instead of 'cert_ids' , use this one over there
'cert_ids' : fields.one2many('purchase.requisition.line','cert_requisition_id','Products to Purchase',states='done': [('readonly', True)]),
And after that add an object, in your .py file i.e
class purchase_requisition_line(osv.Model):
_inherit = 'purchase.requisition.line'
_columns =
'cert_requisition_id': fields.many2one('certificados.certificados', 'Products to Purchase')
purchase_requisition_line()
Hope this will Solve your Error.
【讨论】:
以上是关于XML 设计 OpenErp的主要内容,如果未能解决你的问题,请参考以下文章