Skip to Content
Menu
This question has been flagged
4 Replies
11595 Views

Hi everybody.

I need to display values from one2many field in tree view, so I decided to create functional field and declared it on my xml tree view:


    def get_product_brands(self, cr, uid, ids, fields, arg, context):

        res={}

        for record in self.browse(cr, uid, ids, context=None).application_data_product_template_ids:

            brands = record.brand.name or ''

        print brands

        res[record.id] = brands

        return res


and my field declaration:

'brands' : fields.function(get_product_brands, method=True, string="Product brands", type='char', store=True)

xml sample code:

<record model="ir.ui.view" id="product_tree_inherit">

     <field name="name">product.tree.inherit</field>

     <field name="model">product.template</field>

     <field name="inherit_id" ref="product.product_template_tree_view"/>

     <field name="arch" type="xml">

     <xpath expr="//field[@name='categ_id']" position="after"> 

         <field name="brands"/>

     </xpath>

   </field>

</record>



In my console, I can see correct records printed but I does not display anything in my tree view.


Can anyone help me?

Avatar
Discard
Best Answer

Hi,

you need to write you function as like below.

def get_product_brands(self, cr, uid, ids, fields, arg, context):

    res={}

    for record in self.browse(cr, uid, ids):

        brands = ''

        for temp_obj in record.application_data_product_template_ids:

            brands = brands + record.brand.name or ''

        print brands

        res[record.id] = brands

return res


I hope you will get list of all brands.

Avatar
Discard
Author

Hi, thanks for you answer, in console, I can see correct values!!....but in the end I get this error log: File "/home/odoo/openerp/models.py", line 3146, in read self._read_from_database(stored) File "/home/odoo/openerp/api.py", line 239, in wrapper return new_api(self, *args, **kwargs) File "/home/odoo/openerp/models.py", line 3313, in _read_from_database vals[f] = res2[vals['id']] KeyError: 8

Can you put entire error log ? It is helpful to resolve it.

Best Answer

if you use the odoo v8


name = fields.Char(string="Name")
upper = fields.Char(compute='_compute_upper', inverse='_inverse_upper')

@api.depends('name')
def _compute_upper(self):
for rec in self:
self.upper = self.name.upper() if self.name else False

def _inverse_upper(self):
for rec in self:
self.name = self.upper.lower() if self.upper else False

Hope to help you.

Avatar
Discard
Related Posts Replies Views Activity
4
Dec 23
16124
1
Sep 16
6470
0
Mar 15
2858
0
Sep 24
295
1
Mar 23
1186