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

I am using the fields_view_get function to change certain properties of the form. However, I am facing 2 issues:

1) the fields_view_get function gets invoked everytime when I click on tree view but only the first time when I click on form view . I want it to be invoked each time I click on the form view.

2) Using context.get('active_ids') always returns None, when I use it inside fields_view_get.

Code Snippet:   

def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False):
        res = super(hr_travel_allowance_request, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=submenu)
        active_id=context.get('active_ids')
        print "Context",active_id
        print res
        return res

Is there something I am doing wrong when I invoke it?

P.S.    Please tell me how to add formatted code to my question. I couldn't find an option to do it.

아바타
취소
베스트 답변

What you have noticed is correct...

"fields_view_get", is method which will be called only once, that is to load the view, as the name indicates, it will load the XML view & the fields associated to that object...

once the view is loaded, then the datas are fetched from database, after that the view is unaltered...

So when you open a form, only once the function will be evoked... So does in the case of tree view, however since you click on the action menu, it is like evoking the action newly, inturn it will evoke the "field_view_get" again, seeming it look like it is called repeatedly, but technically it is no, ...

아바타
취소
베스트 답변

you can get active_id in fields_view_get in odoo 15 using self.env.context.get('params')['id']:

Example: 

if self.env.context.get('params') and 'id' in self.env.context.get('params'):
active_id = self.env.context.get('params')['id']


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

Thank you for the response. However, I have also observed that when I select the 'Tree' view from the available modes on the right side, the fields_view_get gets invoked each time. But it does not happen  in the case of form view. Also, do you know how to get the context.get('active_ids') to work properly?

아바타
취소

contex.get('active_ids') is mostly used in wizards/transient models, and holds the id(s) of model from wich the wizzard is called....

베스트 답변

Don't expect context.get('active_ids') to be populated properly in fields_view_get.  That method is invoked BEFORE any search/read on the selected model is carried out.  If you can described what you are trying to achieve, maybe we can help you better.

아바타
취소
관련 게시물 답글 화면 활동
1
4월 15
3855
0
1월 21
2509
5
7월 19
5004
1
12월 17
7699
2
11월 16
6511