In this case, we intelligently resolve attribute names to SQLAlchemy mapper class instances or mapped attributes. We let SQLAlchemy do the SQL generation.
Soon, we'll open source an AngularJS plugin that lets you just push/delete from regular old JavaScript objects in order to generate the diffset the server needs. We're hoping we don't have to implement a protocol, and will instead be able to just submit a list of changes to JavaScript objects.
With Angular, on the other hand, you can just pop the full object from retrieved from the server into your $scope, change it like you would any other object, and then sync it back with a function that will create a diffset between the original object and the current state.