Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
2 Odpowiedzi
3504 Widoki

Since V14 the fields size parameter (size=x) is no longer valid on field definitions.
What is the correct way to limit the size of a string field in the database (not the view) so that the length is automatically cropped to 18 characters?

Please note that I need to do this on a related field:
fields.Char(string='CSV Memo', related='ref', store=False)

Originally in V13 I used:
fields.Char(string='CSV Memo', related='ref', store=False, size=18)

Awatar
Odrzuć
Autor Najlepsza odpowiedź

Interesting update. I actually tried adding back size attribute to a field in V15 and it works without issue or any warning in the log! I was surprised as I took the advice from an OCA article https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-14.0.

However I can see that even in V16 there are still many uses of the size attribute used on char fields, for example:
https://github.com/odoo/odoo/blob/16.0/addons/l10n_de/models/datev.py

Anyone know if Odoo backtracked on this plan and it's no longer relevant?

Awatar
Odrzuć
Najlepsza odpowiedź

HI Chris Mann, 
Second option will be try to add constraints and check length of the char field in its method. You can raise exception for the size exceed. 

If you want to automatically crop it to 18 char , then you have to follow the string slicing. But on you case its related field , so might be automatically cropped will not work.
Hope it will help you. 

Awatar
Odrzuć
Autor

Thanks Malay.
Unfortunately I don't think those options will work.
The field is used as part of an export template to CSV file and needs to have the limit applied when exported so that the field length is limited.
It's to export to a bank formatted CSV for payments that has strict rules on length.

Powiązane posty Odpowiedzi Widoki Czynność
3
maj 25
1706
1
kwi 25
1272
3
wrz 24
14161
1
lip 24
6799
2
lut 24
2459