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

I would like to include a related field from res.currency in a ORM model, but can't find any information how to deal with decimal precision in ORM.

exchange_rate = fields.Float('res.currency.rate', 
'Exchange Rate', related='currency_id.rate',         readonly=True)

When I open a view with the fields I get this error:

 File "/opt/odoo/odoo-server/openerp/tools/float_utils.py", line 29, in _float_check_precision

return 10 ** -precision_digits
TypeError: bad operand type for unary -: 'str' 

Would be glad to know a workaround to solve this problem.


Avatar
Annuleer
Beste antwoord

as docs saids in 

https://www.odoo.com/documentation/8.0/reference/orm.html

class openerp.fields.Float(string=None, digits=None, **kwargs) 
The precision digits are given by the attribute
        Parameters digits -- a pair (total, decimal), or a function taking a database cursor and returning a pair (total, decimal)

Your definition could be changed to this:

exchange_rate = fields.Float('res.currency.rate', 'Exchange Rate', related='currency_id.rate', readonly=True, digits=(16,2))

or you could use a managed decimal precision already defined like 

import openerp.addons.decimal_precision as dp
...
exchange_rate = fields.Float('res.currency.rate', 'Exchange Rate', related='currency_id.rate', readonly=True, digits=dp.get_precision('Account') )

Avatar
Annuleer
Auteur

Thank you Axel, Your solution will probably work only with not related fields. In my case I get with both solutions a "duplicate value for keyword arguments "digits"" Error.

related fields are function fields and they need pretty much all the required attributes/arguments for field definition than normal fields, because when it gets calculated the field continue as the normal field type float and needs the digits param

Marked it as solved as this is a good answer that works fine. ;)

Beste antwoord

is the error solved?

Avatar
Annuleer
Gerelateerde posts Antwoorden Weergaven Activiteit
1
jan. 23
32442
2
nov. 22
7860
0
sep. 19
98
1
nov. 18
6211
1
jul. 17
4167