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的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中使用inflater将一个xml设计调用到另一个xml设计中

Android Studio xml文件设计器使用问题

XML

XML 设计 OpenErp

关于XML

XML 简介