跳至內容
選單
此問題已被標幟
4 回覆
12538 瀏覽次數

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?

頭像
捨棄
最佳答案

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.

頭像
捨棄
作者

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.

最佳答案

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.

頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
4
12月 23
17586
1
9月 16
7334
0
3月 15
3591
0
9月 24
296
1
3月 23
2244