I have defined this functional field so that I can get values from one2many field and display them in tree view:
def get_product_brands(self, cr, uid, ids, fields, arg, context):
context = context or {}
res={}
for record in self.browse(cr, uid, ids, context=None):
brands = ''
for val in record.application_data_product_template_ids
if val.brand.name:
brands += "%s " % (val.brand, )
print brands
res[record.id] = brands and brands[:-1] or ""
return res
my field defintion:
'brands' : fields.function(get_product_brands, method=True, string="Product brands", type='char')
But I'm getting this error:
File "/home/odoo/addons/bal_dev/balerce_dev.py", line 209, in get_product_brands_2
for record in self.browse(cr, uid, ids, context=None).application_data_product_template_ids:
File "/home/odoo/openerp/fields.py", line 755, in __get__
record.ensure_one()
File "/home/odoo/openerp/models.py", line 5219, in ensure_one
raise except_orm("ValueError", "Expected singleton: %s" % self)
except_orm: ('ValueError', 'Expected singleton: product.template(8, 4, 5, 9, 2, 3, 7)')
application_data_product_template_ids is your field? in this model?
application_data_product_template_ids, is a new one2many field in product.template model. I use this field to store brand values. What this function needs to do is to fetch all brand values stored in this new one2many field