콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
2 답글
3798 화면

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)

아바타
취소
작성자 베스트 답변

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?

아바타
취소
베스트 답변

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. 

아바타
취소
작성자

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.

관련 게시물 답글 화면 활동
3
5월 25
2318
1
4월 25
1755
3
9월 24
14935
1
7월 24
7469
2
2월 24
2810