Skip to Content
Menu
This question has been flagged
4 Replies
8002 Rodiniai

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.

Portretas
Atmesti
Best Answer

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, ...

Portretas
Atmesti
Best Answer

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']


Portretas
Atmesti
Autorius Best Answer

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?

Portretas
Atmesti

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

Best Answer

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.

Portretas
Atmesti
Related Posts Replies Rodiniai Veikla
1
bal. 15
3809
0
saus. 21
2490
5
liep. 19
4987
1
gruod. 17
7690
2
lapkr. 16
6499