使用ORM方法获取所需数据?

时间:2013-07-09 19:55:43

标签: openerp

我需要在fields_view_get方法和a的树视图中获取字段的值 我使用ORM方法来实现这一目标。我的代码:

 class res_partner(osv.osv):

_inherit = 'res.partner'


def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):


    if context is None:
        context = {}

    partner_obj = self.pool.get('res.partner')
    ids_partner = partner_obj.search(cr, uid, [], context=context)              
    partner_name = partner_obj.browse(cr, uid, ids_partner, context=context)
    element = partner_obj.browse(cr,uid,ids_partner[0]).numcte

    res = super(res_partner,self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)


    newcte=test_name.numcte


    doc = etree.XML(res['arch'])

    if view_type == 'tree':

        for node in doc.xpath("//field[@name='numcte']"):
               node.set('string', 'numcte')
        for node in doc.xpath("//button[@name='icono']"):
               node.set('icon', newcte) 

    res['arch'] = etree.tostring(doc)
    return res


_columns = {
    'numcte': fields.text('numero cliente'),
}

 res_partner()

我的问题是,当我使用时,例如:

 element = partner_obj.browse(cr,uid,ids_partner[0]).numcte

它返回我想要的字段的值,但是在树视图中每行都是相同的,例如A001,A001,A001,而不是A001,A002,A003。

在这种情况下ids_partner [0],如何使这个数字变为动态并且每行都在变化?

或者在使用它的情况下:

 my_data  = partner_obj.read(cr, uid, ids_partner, ["numcte"], context=context) 

将这样的元组归还给我:

[{'numcte':u'A001','id':3},{'numcte':u'A002','id':2},{'numcte':u'A003','id ':4}] [{'numcte':u'A001','id':3},{'numcte':u'A002','id':2},{'numcte':u'A003','id':4 }] [{'numcte':u'A001','id':3},{'numcte':u'A002','id':2},{'numcte':u'A003','id':4 }]

每行一个

如何获取正确行所需字段的值。 ?

谢谢大家的时间,我已经有一段时间了,所以任何帮助都是有用的。

1 个答案:

答案 0 :(得分:0)

提供了

fields_view_get以允许您更改/创建定义视图的XML,而不是数据。

您需要在fields_view_get中执行的操作是将您的字段放到视图上。但是,覆盖fields_view_get只能在非常不寻常的情况下完成,在这种情况下,您需要通过动态查看,而这种方式在XML视图中无法通过attrs和状态轻松实现。

通常的模式是在XML中创建一个扩展伙伴树视图的视图,并使用XPATH表达式将您的字段添加到正确的位置。如果您的字段是新字段,则还需要创建一个继承res_partner模型的新模型,并在_columns中添加新字段。