При итерировании кверисет целиком загружается в память, отсюда и проблема. Решение, которое предложил
Александр Втюрин, хоть и несколько топорное, будет работать: идея там верная. Несколько лет тому эта проблема стояла очень остро, поэтому даже появился широко известный в узких кругах
Сниппет #1949, сделанный именно на этом принципе.
Но начиная с Django версии, если не ошибаюсь, 1.4, появилось штатное средство, предназначенное для аналогичных целей — метод
iterator() у кверисета.