Se rendre au contenu
Menu
Cette question a été signalée
2 Réponses
2190 Vues

I am trying to make the name field of the res.partner model translatable by overriding the name field and adding translate=True attr. I've done this in odoo 15 and it worked like a charm but in odoo 17 I encountered this error:

psycopg2.errors.UndefinedFunction: operator does not exist: character varying ->> unknown

LINE 1: ...Y "res_company"."sequence"  , "res_company"."name"->>'en_US'...

                                                             ^

HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

Avatar
Ignorer
Meilleure réponse

The error you're encountering occurs because the name field of res.partner is related to the name field of res.company, and in Odoo 17, the translation mechanism requires the related fields to explicitly support translations as well.

In Odoo 15, this wasn't as strict, but starting from Odoo 17, you need to ensure that any related fields that reference translatable fields also have the translate=True attribute.

In your case, the res.company model has a field like this:

name = fields.Char(related='partner_id.name', string='Company Name', required=True, store=True, readonly=False)

To fix the error, you need to override this field and add the translate=True attribute to it, like so:

name = fields.Char(related='partner_id.name', string='Company Name', required=True, store=True, readonly=False, translate=True)

By doing this, the translation mechanism will apply not only to the name field of res.partner but also to the name field in res.company, which is crucial for avoiding the PostgreSQL error related to the JSON extraction operator (->>). This adjustment ensures that both fields are handled correctly when translations are applied.

Avatar
Ignorer
Auteur Meilleure réponse

I found the solution.

There’s a related field for res.partner's name in res.company:

name = fields.Char(related='partner_id.name', string='Company Name', required=True, store=True, readonly=False)

This field needs to be overridden to include the translate=True attribute, like this:

name = fields.Char(related='partner_id.name', string='Company Name', required=True, store=True, readonly=False, translate=True)
Avatar
Ignorer
Publications associées Réponses Vues Activité
1
sept. 24
981
4
août 24
1313
0
déc. 24
850
0
juil. 24
1499
2
juil. 24
2136