我需要在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 }]
每行一个
如何获取正确行所需字段的值。 ?
谢谢大家的时间,我已经有一段时间了,所以任何帮助都是有用的。
答案 0 :(得分:0)
fields_view_get
以允许您更改/创建定义视图的XML,而不是数据。
您需要在fields_view_get
中执行的操作是将您的字段放到视图上。但是,覆盖fields_view_get
只能在非常不寻常的情况下完成,在这种情况下,您需要通过动态查看,而这种方式在XML视图中无法通过attrs和状态轻松实现。
通常的模式是在XML中创建一个扩展伙伴树视图的视图,并使用XPATH表达式将您的字段添加到正确的位置。如果您的字段是新字段,则还需要创建一个继承res_partner模型的新模型,并在_columns中添加新字段。