تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
4 الردود
7974 أدوات العرض

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
أبريل 15
3785
0
يناير 21
2482
5
يوليو 19
4976
1
ديسمبر 17
7685
2
نوفمبر 16
6491