【问题标题】:Disordered fields on custom OpenERP module自定义 OpenERP 模块上的无序字段
【发布时间】:2013-04-27 04:03:10
【问题描述】:

我在 module.py 上按此顺序声明了这些字段

class certificados(osv.osv):

_name = 'certificados.certificados'
_description = "Certificados de No Produccion"
_inherit=['mail.thread', 'ir.needaction_mixin']

_columns = {
    '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'), 'cert_ids' : fields.one2many('certificados.line', 'requisicion_id','Items del Certificado'),
    'descripcion' : fields.text('Descripcion'),
    'notas' : fields.text('Notas'),
}


class certificados_line(osv.osv):

_name = 'certificados.line'
_description = "Certificados No Produccion line"

def multi_a_b(self, cr, uid, ids, name, arg, context=None):
    res = {}
    for record in self.browse(cr, uid, ids,context):
        res[record.id] = record.Cantidad * record.Precio_Unitario_Declarado
    return res

_columns = {
    'Codigo_Arancelario' : fields.integer('Codigo Arancelario'),
    'product_id' : fields.many2one('product.product', 'Material'),
    '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.function(multi_a_b, type='integer', string='Valor En Divisas'),
    'requisicion_id' : fields.many2one('certificados.certificados', 'Certificados de No Produccion', ondelete='cascade'),
    'Cantidad_Consumida' : fields.float('Cantidad Consumida'), 'Cantidad_Disponible' : fields.float('Cantidad Disponible'),
}

certificados_line()

在我的 module_view.xml 中,我加载了 'certificados.line' 类,在 'certificados.certificados 中有一个名为 cert_ids 的字段,如您在上面的代码中所见。

问题是,当我加载 certificados.line 字段时,我按特定顺序执行,但似乎 xml 不知何故不关心这一点,并随机获取 cert_ids 字段。

这是 module_view.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="Productos">
                            <field name="cert_ids">
                                <tree string="Productos">
                                    <field name="product_id"/>
                                    <field name="Codigo_Arancelario"/>
                                    <field name="Descripcion_Arancelaria"/>
                                    <field name="Especificaciones_Tecnicas"/>
                                    <field name="Cantidad"/>
                                    <field name="Precio_Unitario_Declarado"/>
                                    <field name="Valor_En_Divisas"/>
                                    <field name="Cantidad_Consumida"/>
                                </tree>
                            </field>
                            <separator string="Observaciones"/>
                            <field name="descripcion"/>
                        </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>

如果我以特定顺序将字段放入cert_ids 似乎并不重要,它会以随机方式加载certificados.line 类中的所有字段,有人可以对此有所了解吗?

我希望我已经解释了自己。

提前致谢。

【问题讨论】:

    标签: python xml module openerp


    【解决方案1】:

    请为模型certificados_line 定义一个视图。您已经在*student_certificados_form* 中为模型*certificados_line* 定义了一个树视图。但不是表单视图。您必须在*student_certificados_form* 内添加一个表单视图或为模型*certificados_line* 添加一个新表单视图

    【讨论】:

    • 没错,我会在树之后定义它...谢谢!
    【解决方案2】:

    certificados_line 类中的用户 _order_by : 按字段的特定顺序列出数据。

    【讨论】:

    • 谢谢!但是_order_by又是什么属性呢?
    • 任何您想用来维护列表顺序的字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多