Skip to Content
Menu
This question has been flagged

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
Discard
Best Answer

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
Discard
Author Best Answer

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
Discard
Related Posts Replies Views Activity
1
Sep 24
979
4
Aug 24
1312
0
Dec 24
849
0
Jul 24
1495
2
Jul 24
2132