Firstly, huge thanks for the code.
I have a small question. Given two serializers: a parent and a child, inserting a validate method in the child serializer and printing something from there reveals that the function is called twice. Is this deliberate as it seems a bit inefficient to run the same code twice.