Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
2 Replies
3506 Tampilan

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)

Avatar
Buang
Penulis Jawaban Terbai

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?

Avatar
Buang
Jawaban Terbai

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. 

Avatar
Buang
Penulis

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.

Post Terkait Replies Tampilan Aktivitas
3
Mei 25
1709
1
Apr 25
1273
3
Sep 24
14161
1
Jul 24
6800
2
Feb 24
2462