Je tente de remplacer classe message méthode def _get_default_author (auto) par cet exemple: by this exampleOdoo comment fonctionnent par défaut Ecraser nouvelle API
Le modèle original:
class Message(models.Model):
_name = 'mail.message'
_inherit = ['ir.needaction_mixin']
@api.model
def _get_default_author(self):
return self.env.user.partner_id
author_id = fields.Many2one(
'res.partner', 'Author', select=1,
ondelete='set null', default=_get_default_author,
help="Author of the message. If not set, email_from may hold an email address that did not match any partner.")
Le hérité modèle:
class MyClass(models.Model):
_name = 'my.class'
_inherit = ['mail.thread', 'ir.needaction_mixin']
@api.model
def _get_default_author(self):
new = self.env['res.users'].search([('id', '=', '1')])
return new.partner_id
author_id = fields.Many2one(default=_get_default_author)
B J'ai eu une erreur:
File "/opt/odoo/openerp/models.py", line 4113, in create
vals = self._add_missing_default_values(vals)
File "/opt/odoo/openerp/api.py", line 236, in wrapper
return new_api(self, *args, **kwargs)
File "/opt/odoo/openerp/api.py", line 478, in new_api
result = method(self._model, cr, uid, *args, **old_kwargs)
File "/opt/odoo/openerp/models.py", line 1776, in _add_missing_default_values
defaults = self.default_get(cr, uid, list(missing_defaults), context)
File "/opt/odoo/openerp/api.py", line 238, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/openerp/api.py", line 342, in old_api
result = method(recs, *args, **kwargs)
File "/opt/odoo/openerp/models.py", line 1336, in default_get
defaults = self._convert_to_cache(defaults, validate=False)
File "/opt/odoo/openerp/models.py", line 5454, in _convert_to_cache
for name, value in values.iteritems()
File "/opt/odoo/openerp/models.py", line 5455, in <dictcomp>
if name in fields
File "/opt/odoo/openerp/fields.py", line 1655, in convert_to_cache
raise ValueError("Wrong value for %s: %r" % (self, value))
ValueError: Wrong value for my.class.author_id: res.partner(3,)
Qu'est-ce que je fais mal? Peut-être qu'il existe une autre façon d'écraser la fonction par défaut? Mise à jour: Mise à jour: Juste pour les tests j'ai fait les mêmes changements pour la classe de base Message (models.Model). Et tout allait bien. Donc, si je comprends bien le problème est avec mon code. Peut-être que je l'écrase mal ..