Module level variables are definitely a problem - querysets are "lazy" only as long as they are not used (iteration, evalution, whatever), as soon as you start retrieving records it does populate a cache (hint: Django is open-source, you can just ReadTheCode(tm) when the doc is not enough).
You might also have troubles with transaction isolation level if you use InnoDB tables (cf Django's doc on this last point).