Overslaan naar inhoud
Menu
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Deze vraag is gerapporteerd
2 Antwoorden
2188 Weergaven

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
Annuleer
Beste antwoord

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
Annuleer
Auteur Beste antwoord

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
Annuleer
Gerelateerde posts Antwoorden Weergaven Activiteit
1
sep. 24
980
4
aug. 24
1313
0
dec. 24
849
0
jul. 24
1499
2
jul. 24
2135