When I first started investigating Piston I read almost every line of code that I was going to be using.
I'm glad I did!
Understanding Piston at the source level allowed me to create wrappers, mixins, and extensions that turned Piston into something that I was more comfortable with. I moved away from Piston (Piston lacks a few features that come baked-in by default w\ TP) to Tastypie, but, the experience was almost exactly the same.
I spent most of last week reading the Tastypie code and creating a tastypie_ext library that helps me do things my way and patch up a few of what I see as major issues (did you know that Tastypie will 500 by default if you pass it malformed json/yaml/xml? That is, client input can raise an unhandled exception on demand.)
As far as documentation goes, Tastypie isn't much better than Piston, and Django itself still has a few gaping holes in its documentation (I'm still waiting for better class-based view documentation before I adopt them completely.)
I tend to view frameworks and libraries as loaded guns... At the end of the day every person using a framework should understand how it works from top to bottom at the source level.
P.S. Thanks for django-uni-form (now django-crispy-forms)! I learned to use it by reading the source :D.