Is there a way you can have a fake many2one field on a model without storing it on the database? I know the related field will do this, but the problem with that is it also changes the related record's value once I make a change to the related field and I dont want to do that.
For example, lets say I have a related field named 'company_rel' which is linked to a partner_id (many2one) field that points to the company_id field like this:
'company_rel': fields.related('partner_id', 'company_id', relation='res.company', type='many2one', string='company')
If I add the company_rel field to the form view, and change the value, then it also changes the value for the related partner as well, which is what I dont want to do.
I also tried using the dummy field type, which almost works, but when I make a selection from the drop down list, it returns a False value when I try to use the selected id in another method.
I also tried making a regular many2one field where I set the store=False attribute, but that didnt work either
Is there a way to make a fake many2one field so that I can use the selected id in another method without storing it to the field to the database?
Try to use computed field, with combination of all tree: compute='_my_compute_func', inverse='_my_inverse_func' and store=False, in this case it will be "fake" field as you refer to it and will not be saved to database. you can use selected id inside of _my_inverse_func, OR in addition of this combination, you can have onchange function on this field as well... in the later case, if your application logic is applied under onchange function, then inverse function should present anyway, but it can be simple placeholder (just to allow editing of field in UI) as:
@api.multi def _my_inverse_func(self): pass
NOTE: that onchange way will work only if you'll use selected id immediately, while user edits the UI. if you're planing to access this field later from the code, then you should stick with the first option and properly implement both, compute and inverse functions, i.e. _my_compute_func must compute value of this field (the id) and assign it to the field. then it'll not return "false" as in your case.
Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!
About This Community
|Asked: 10/14/15, 2:33 PM|
|Seen: 957 times|
|Last updated: 10/15/15, 2:02 PM|