У меня большие порции данных, обычно около 2000+ записей, но в этом отчете у нас есть возможность посмотреть, насколько мы хотим, чтобы это могло быть до 10000 записей
Отчет разделен на: две категории, а затем в каждой категории мы разбиваемся по валютам, поэтому в списке есть несколько подкатегорий.
Моя проблема заключается в эффективном расчете различных промежуточных итогов. Я использую Django и передаю тег тега валюту и категорию, если это применимо, а затем тег тега отображает итоговое значение. Обратите внимание, что иногда у меня есть промежуточный итог только для категории, без указания валюты.
Первоначально я использовал отдельный запрос для каждой промежуточной суммы, просто используя .filter (), если была валюта / категория, например:
if currency:
entries = entries.filter(item_currency=currency)
Это стало проблемой, так как у меня было слишком много запросов и слишком много времени генерации (2000+ мс), поэтому я решил использовать список (записи), чтобы выполнить свой запрос сразу, а затем выполнить цикл это с простыми списками:
totals['quantity'] = sum([e.quantity for e in entries])
Моя проблема, если вы ее пока не видите, заключается в том ... как я могу эффективно добавить условие для валюты / категории в каждое понимание списка? Иногда их там не будет, иногда они будут, поэтому я не могу просто напечатать:
totals['quantity'] = sum([e.quantity for e in entries if item_currency = currency])
Я мог бы создать огромный блок if, но он не очень чистый и является катастрофой для техобслуживания, поэтому я обращаюсь к сообществу Stackoverflow за небольшим пониманием .. заранее спасибо:)