Managed to find a solution:
so_receipt_location=fields.Many2one('stock\.picking\.type','Τοποθεσία\ Παραλαβής'\)\
\ \
def\ _available_locations\(self\):
\ \ \ locations=self\.sudo\(\)\.search_read\(\[\('id','!=',self._origin.id)],{"so_receipt_location"})
locations_list=[]
for r in locations:
if (r["so_receipt_location"]):
locations_list.append(r["so_receipt_location"][0])
return locations_list
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False,submenu=False):
res = super(SoftOneBranch, self).fields_view_get(
view_id=view_id,view_type=view_type,toolbar=toolbar,submenu=submenu) locations_list=self._available_locations()
if ('so_receipt_location' in res['fields']):
res['fields']['so_receipt_location']['domain']=[('id','not in',locations_list)]
return res
@api.onchange('so_receipt_location')
def _get_locations(self):
locations_list=self._available_locations()
return {'domain':{'so_receipt_location':[('id','not in',locations_list)]}}
Domain for so_receipt_location gets updated when form loads and every time the user picks another option from the list. Available values exclude current id's value.