Why don't you put a breakpoint ( import pdb; pdb.set_trace() ) in your code and check the process? I mean, with the letter 's' you can go inside the function so you can go deep down to the Django code.
I do not know why you think that using a breakpoint, as you say, is a bad solution. Actually, this is how I debug all my code.
BTW: try ipdb insteand pdb. You will like it;)
source share