Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
4 Antworten
7975 Ansichten

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.

Avatar
Verwerfen
Beste Antwort

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

Avatar
Verwerfen
Beste Antwort

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


Avatar
Verwerfen
Autor Beste Antwort

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?

Avatar
Verwerfen

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

Beste Antwort

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.

Avatar
Verwerfen
Verknüpfte Beiträge Antworten Ansichten Aktivität
1
Apr. 15
3785
0
Jan. 21
2482
5
Juli 19
4976
1
Dez. 17
7685
2
Nov. 16
6491