Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

AttributeError: 'Text' object has no attribute '_update'

By
Bruno S.
on 11/7/14, 7:37 AM 997 views

Hi all,

I'm working on my custom module, and I'm trying to integrate tree view inside form page.

I'm doing something wrong and just can't avoid this error:

 

Traceback (most recent call last):

  File "/home/odoo/odoo/openerp/http.py", line 476, in _handle_exception

    return super(JsonRequest, self)._handle_exception(exception)

  File "/home/odoo/odoo/openerp/http.py", line 495, in dispatch

    result = self._call_function(**self.params)

  File "/home/odoo/odoo/openerp/http.py", line 311, in _call_function

    return checked_call(self.db, *args, **kwargs)

  File "/home/odoo/odoo/openerp/service/model.py", line 113, in wrapper

    return f(dbname, *args, **kwargs)

  File "/home/odoo/odoo/openerp/http.py", line 308, in checked_call

    return self.endpoint(*a, **kw)

  File "/home/odoo/odoo/openerp/http.py", line 685, in __call__

    return self.method(*args, **kw)

  File "/home/odoo/odoo/openerp/http.py", line 360, in response_wrap

    response = f(*args, **kw)

  File "/home/odoo/odoo/addons/web/controllers/main.py", line 941, in call_kw

    return self._call_kw(model, method, args, kwargs)

  File "/home/odoo/odoo/addons/web/controllers/main.py", line 933, in _call_kw

    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)

  File "/home/odoo/odoo/openerp/api.py", line 234, in wrapper

    return old_api(self, *args, **kwargs)

  File "/home/odoo/odoo/openerp/api.py", line 357, in old_api

    result = method(recs, *args, **kwargs)

  File "/home/odoo/odoo/openerp/models.py", line 5635, in onchange

    record = self.new(values)

  File "/home/odoo/odoo/openerp/api.py", line 232, in wrapper

    return new_api(self, *args, **kwargs)

  File "/home/odoo/odoo/openerp/models.py", line 5248, in new

    invf._update(record[name], record)

AttributeError: 'Text' object has no attribute '_update'

 

XML:

 

<page string="Usluga uključena u popravak">
                                <field name="service_ids">
                                    <tree string="Usluge">
                                        <field name="service"/>
                                        <field name="cost"/>
                                    </tree>
                                </field>
                            </page>

 

model.py

 

class Helpdesk(models.Model):
    _name = 'helpdesk.kvarovi'

service_ids = fields.One2many('helpdesk.service', 'cost', 'service')

 

class Service(models.Model):
    _name = 'helpdesk.service'
    
    service = fields.Char(String="Usluga", help="Usluga uključena za popravak navedenog kvara")
    cost = fields.Float(digits=(6,2), help="Cijena usluge"

 

Any help would be much appreciate...

Thanks in advance!

The stack trace mentions a field of type 'Text' (fields.Text(...)). Are you sure there aren't any other models or fields involved?

Marvin Taboada
on 11/7/14, 10:50 PM

Probably yes, but my response is based on the code you've posted. Post more from your code ... if you need more help. All i can say is that the error is raised from a part of code dealing with the creation of a record that did not exist in the database yet, but just in memory. This kind of errors can also be related to a wrong code used in your view definition (.xml file), more exactly this means that you are probably using a wrong code from the old api (V7) conflicting with the new api.

Med Said BARA
on 11/8/14, 3:50 AM

You should read this: https://github.com/nbessi/odoo_new_api_guideline/blob/master/source/environment.rst

Med Said BARA
on 11/8/14, 4:06 AM

Check this line of your code: service_ids = fields.One2many('helpdesk.service', 'cost', 'service') ???

Med Said BARA
on 11/8/14, 4:23 AM

To read carefully (about one2many and many2many): https://github.com/nbessi/odoo_new_api_guideline/blob/master/source/fields.rst#one2many

Med Said BARA
on 11/8/14, 4:30 AM
0

Med Said BARA

--Med Said BARA--
2664
| 5 5 7
Algeria
--Med Said BARA--
Med Said BARA
On 11/7/14, 11:32 AM

Perhaps, you should move the class Service before the class Helpdesk

I did one minos change, I replaced type text with Char, the rest of the code is the same, but the error isnt. Here is larger part of my code: class Service(models.Model): _name = 'helpdesk.service' service = fields.Char(string="Usluga", help="Usluga uključena za popravak navedenog kvara") cost = fields.Float(digits=(6,2), help="Cijena usluge" XML: kvarovi.form helpdesk.kvarovi

ERROR: Traceback (most recent call last): File "/home/odoo/odoo/openerp/http.py", line 476, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/home/odoo/odoo/openerp/http.py", line 495, in dispatch result = self._call_function(**self.params) File "/home/odoo/odoo/openerp/http.py", line 311, in _call_function return checked_call(self.db, *args, **kwargs) File "/home/odoo/odoo/openerp/service/model.py", line 113, in wrapper return f(dbname, *args, **kwargs) File "/home/odoo/odoo/openerp/http.py", line 308, in checked_call return self.endpoint(*a, **kw) File "/home/odoo/odoo/openerp/http.py", line 685, in __call__ return self.method(*args, **kw) File "/home/odoo/odoo/openerp/http.py", line 360, in response_wrap response = f(*args, **kw) File "/home/odoo/odoo/addons/web/controllers/main.py", line 941, in call_kw return self._call_kw(model, method, args, kwargs) File "/home/odoo/odoo/addons/web/controllers/main.py", line 933, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) File "/home/odoo/odoo/openerp/api.py", line 234, in wrapper return old_api(self, *args, **kwargs) File "/home/odoo/odoo/openerp/api.py", line 357, in old_api result = method(recs, *args, **kwargs) File "/home/odoo/odoo/openerp/models.py", line 5635, in onchange record = self.new(values) File "/home/odoo/odoo/openerp/api.py", line 232, in wrapper return new_api(self, *args, **kwargs) File "/home/odoo/odoo/openerp/models.py", line 5238, in new record._cache.update(record._convert_to_cache(values, update=True)) File "/home/odoo/odoo/openerp/models.py", line 5146, in _convert_to_cache for name, value in values.iteritems() File "/home/odoo/odoo/openerp/models.py", line 5147, in if name in fields File "/home/odoo/odoo/openerp/fields.py", line 939, in convert_to_cache return float_round(float(value or 0.0), precision_digits=self.digits[1]) TypeError: float() argument must be a string or a number I tried to put class Service before and it didn't help. I really stuck with this one. I also read the definition about One2many relationship, and tried to convert this service_ids = fields.One2many('helpdesk.service', 'cost', 'service') to this: service_ids = fields.One2many('helpdesk.service', 'cost') service_ids = fields.One2many(comodel_name='helpdesk.service', inverse_name='cost') But then it does not recognize key word 'cost'. Can you see my mistake now? Br, Bruno

Infosistem d.d., Bruno S.
on 11/11/14, 4:06 AM

Sorry for the text edit, It didnt keep my formating...

Infosistem d.d., Bruno S.
on 11/11/14, 4:07 AM

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

3 follower(s)

Stats

Asked: 11/7/14, 7:37 AM
Seen: 997 times
Last updated: 3/16/15, 8:10 AM