How can I copy the value of 1 field into a second field in odoo? Both fields comes from his grandfather


I have a view that use delegation inherit and his father is res.users.The father of res.users is res.partner.Ok.
The 1st field is "email", that comes from res.partner. The 2nd field is "login", that comes from res.users.
I don´t have problems to write in both of them, but I wanna copy the content of "login" field into "email" field in real time.
I saw onchange from the API, but returns the error:

        Odoo Server Error
    Traceback (most recent call last):
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 647, in _handle_exception
        return super(JsonRequest, self)._handle_exception(exception)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 307, in _handle_exception
        raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\", line 87, in reraise
        raise value
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 689, in dispatch
        result = self._call_function(**self.params)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 339, in _call_function
        return checked_call(self.db, *args, **kwargs)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\service\", line 97, in wrapper
        return f(dbname, *args, **kwargs)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 332, in checked_call
        result = self.endpoint(*a, **kw)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 933, in __call__
        return self.method(*args, **kw)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 512, in response_wrap
        response = f(*args, **kw)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\", line 934, in call_button
        action = self._call_kw(model, method, args, {})
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\", line 922, in _call_kw
        return call_kw(request.env[model], method, args, kwargs)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 689, in call_kw
        return call_kw_multi(method, model, args, kwargs)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 680, in call_kw_multi
        result = method(recs, *args, **kwargs)
      File "<decorator-gen-46>", line 2, in button_immediate_upgrade
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\", line 71, in check_and_log
        return method(self, *args, **kwargs)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\", line 602, in button_immediate_upgrade
        return self._button_immediate_function(type(self).button_upgrade)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\", line 541, in _button_immediate_function, update_module=True)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\", line 85, in new
        odoo.modules.load_modules(registry._db, force_demo, status, update_module)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\", line 339, in load_modules
        force, status, report, loaded_modules, update_module)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\", line 242, in load_marked_modules
        loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\", line 135, in load_module_graph
        registry.init_models(cr, model_names, {'module':})
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\", line 311, in init_models
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 2404, in update_db_foreign_keys
        sql.add_foreign_key(cr, self.relation, self.column2, comodel._table, 'id', 'cascade')
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\", line 150, in add_foreign_key
        cr.execute(query.format(tablename1, columnname1, tablename2, columnname2, ondelete))
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 155, in wrapper
        return f(self, *args, **kwargs)
      File "C:\Program Files (x86)\Odoo 11.0\server\odoo\", line 232, in execute
        res = self._obj.execute(query, params)
    psycopg2.ProgrammingError: no existe la relación «_unknown»

My onchange function is:

    def on_change_login(self):
        self.login =

I think this is not hard, but I don´t know nothing to solve the problem.

2 Answers
Best Answer

you can exchange login and email in your onchange, like below:

    def on_change_login(self): = self.login 


Hi Daniel,

Just create email field in your object and then try to perform an onchange.

Sudhir Arya
ERP Harbor Consulting Services