@pavelsokg

Как суммировать одинаковые значения?

Есть функция:
#
    @action(
        detail=False, methods=['get'], permission_classes=[IsAuthenticated])
    def download_shopping_cart(self, request):
   # получаем список ингредиентов с их количеством
        ingredients = IngredientAmount.objects.filter(
            recipe__cart__user=request.user).values(
            'ingredients__name',
            'ingredients__measurement_unit').annotate(total=Sum('amount'))
  # готовим текстовое сообщения из списка ингредиентов
        shopping_cart = '\n'.join([
            f'{ingredient["ingredients__name"]} - {ingredient["total"]} '
            f'{ingredient["ingredients__measurement_unit"]}'
            for ingredient in ingredients
        ])
        filename = 'shopping_cart.txt'
  # отправляем файл без сохрания на диске
        response = HttpResponse(shopping_cart, content_type='text/plain')
        response['Content-Disposition'] = f'attachment; filename={filename}'
        return response

в которой выводится список со значениями, но одинаковые значения должны суммироваться, чтобы получить общий вес. Как в данном случае элегантно решить задачу?

UPD:
ingredients__name - наименование ингредиента
ingredient["ingredients__measurement_unit - единица измерения веса
amount - вес ингредиента
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы