MouTio
MouTio

Reputation: 1289

How can override a field default value with default_get in odoo9?

I want to override the default value for a field with the default_get API function in odoo9.

I have this in my code:

@api.model
def default_get(self, fields_list):
    res = super(hr_attendance, self).default_get(fields_list)                
    res.update({
                'animal': 'dog'
               })       
    return res

When I create a new register, this error appears in the odoo log:

2016-09-02 11:33:36,680 27542 ERROR mydb openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "/etc/odoo/server/openerp/http.py", line 648, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/etc/odoo/server/openerp/http.py", line 685, in dispatch
    result = self._call_function(**self.params)
  File "/etc/odoo/server/openerp/http.py", line 321, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/etc/odoo/server/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/etc/odoo/server/openerp/http.py", line 314, in checked_call
    result = self.endpoint(*a, **kw)
  File "/etc/odoo/server/openerp/http.py", line 964, in __call__
    return self.method(*args, **kw)
  File "/etc/odoo/server/openerp/http.py", line 514, in response_wrap
    response = f(*args, **kw)
  File "/etc/odoo/server/addons/web/controllers/main.py", line 888, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/etc/odoo/server/addons/web/controllers/main.py", line 880, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/etc/odoo/server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/etc/odoo/server/openerp/api.py", line 354, in old_api
    result = method(recs, *args, **kwargs)
  File "/etc/odoo/server/addons_extra/hr_attendance_extend/hr_attendance.py", line 79, in default_get
    res.update({
AttributeError: 'tuple' object has no attribute 'update'

What I am doing wrong?

Edit: I had another variable with the same name which provoqued conflict. Renaming the variable, everything works perfect.

Upvotes: 4

Views: 5116

Answers (1)

Bhavesh Odedra
Bhavesh Odedra

Reputation: 11143

update is a method of dictionary data-type. And you are trying to use it with tuple data-type. That's reason you got error.

Try with following code:

@api.model
def default_get(self, fields):
    res = super(hr_attendance, self).default_get(fields)
    res['animal'] = 'dog'
    return res

Upvotes: 2

Related Questions