无效的XML架构 - OpenErp XML View

时间:2013-04-08 07:32:36

标签: python xml module openerp

在我的自定义模块中,我尝试在其xml视图中进行一些设计(工作表,组,笔记本......)

我正面临这个问题“无效的XML架构 - OpenErp XML视图”我不知道这里是否有错误的标签,我是基于现有模块进行设计的。

 <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="Crear Certificado" >
                        <tree string="Certificadu" >
                            <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="Certificado" version="7.0">
                            <group>
                                <field name="Codigo_Arancelario" />
                                <field name="Especificaciones_Tecnicas"/>
                                <field name="Valor_En_Divisas" />
                            </group>
                        </form>
                    </field>
                <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>

这是我从其他模块中获取的设计。

module.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'),
            '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()

我认为这不是module.py代码中不匹配或未声明字段的问题。

我确信xml设计有一些东西,但不知道在哪里。

如果有人能提供帮助会非常好。

提前致谢!

3 个答案:

答案 0 :(得分:2)

在你的代码中出现了许多错误。

1.`<field name="Crear Certificado" >`

该字段不会在您的py代码列中退出。并且您的字段名称不是PEP 8规则

2. `<field name="Item" readonly="1">`

项是整数字段,我不明白你为什么像one2many那样对待这个字段并定义树。

3.<div class="oe_chatter">
          <field name="message_follower_ids" widget="mail_followers"/>
          <field name="message_ids" widget="mail_thread"/>
        </div> 

如果你想使用这个字段,你必须在你的对象中继承_inherit = ['mail.thread','ir.needaction_mixin']

你的xml文件结构非常糟糕,请更改它。使用四个空格标签。

希望这对您有所帮助,如果您想在openerp中开发模块,那么首先阅读来自http://doc.openerp.com和7 http://doc.openerp.com/trunk/developers/server/的开发者的开发者书

答案 1 :(得分:2)

您确实在该表单视图中使用了不必要的xml标记。试试这个:

<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>
                                <field name="Codigo_Arancelario"/>
                                <field name="Descripcion_Arancelaria"/>
                            </group>
                            <group>
                                <field name="Especificaciones_Tecnicas"/>
                                <field name="Cantidad"/>
                            </group>
                            <group>
                                <field name="Precio_Unitario_Declarado"/>
                                <field name="Valor_En_Divisas"/>
                            </group>
                            <group>
                                <field name="Cantidad_Consumida"/>
                                <field name="notas"/>
                            </group>
                        </group>
                    </sheet>
                </form>
            </field>
        </record>

如果你想最后使用'message_follower_ids'和'message_ids',在表单视图中显示,你需要继承'mail.thread'对象。

谢谢, Priyesh Solanki

答案 2 :(得分:0)

我认为你需要学习写xml的规则

1)所有XML元素必须具有结束标记 2)XML标签区分大小写 3)XML元素必须正确嵌套 4)XML文档必须具有根元素 5)必须引用XML属性值

http://www.w3schools.com/xml/xml_syntax.asp