Фильтры Django и наборы запросов ленивы. На самом деле это означает, что вы на самом деле не обращаетесь к базе данных, пока не оцените их. Цитирование официальной документации -
Внутри QuerySet может быть сконструирован, отфильтрован, разрезан и, как правило, передан без фактического попадания в базу данных. На самом деле никаких действий с базой данных не происходит, пока вы не сделаете что-то для оценки набора запросов.
Таким образом, единственное место, которое занято в вашей оперативной памяти, это фактически список, содержащий набор запросов и вашу программу. Это когда запрос оценивается и данные извлекаются из базы данных, то есть, когда (в зависимости от того, сколько данных извлекается), память заполняется. Кроме того, было бы неплохо взглянуть на итераторов , а также