This may not be the 'correct' solution but what I did was
To get information from other tables:
In the views model, call the getItem function. Then first call the parent, then you can add to the $item object in the rest of the function. Then return the $item.
public function getItem($pk = null) {
$item = parent::getItem($pk);
// Your code
// Example
$item->newValue = $newValueFromOtherTable
return $item;
}
Then in the same model file, override the save function, run queries storing data into tables other than the views table. Finally run the parent save function to run the normal save method.
public function save($data){
$itemId = $data['id'];
$newValue = $data['newValue'];
// Run queries to store data from other tables in their respective tables
parent::save($data) // To run the save function
}
There is some room for errors in the save function but this is the only way I've been able to achieve this so far. If you run checks before storing any data however it should not cause any problems for you.