Проблемы с данными из django в html

#html #django #django-views

#HTML #джанго #django-просмотры

Вопрос:

Моя цель состоит в том, чтобы иметь сумму элементов, lista[] но выдает мне эту ошибку. lista[] состоит из десятичных чисел

 ValueError at /
    argument must be a sequence of length 3
 

Мой код :

views.py

 def Home(request):
    assets = Post.objects.filter(Asset="BTC", Utente="1").values_list('Quantit')
    lista = []
    for asset in assets:
        lista.append(asset)
    somma = sum(Decimal(lista))
    return render(request, 'porttrack/home.html', {'lista': lista})
 

models.py

 from django.conf import settings
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

class Post(models.Model):
    Utente = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    Asset = models.CharField(max_length=3)
    Quantit = models.DecimalField(max_digits=19, decimal_places=11)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)
 

распечатав только lista[] без somma , он покажет такой список, как этот:

     [(Decimal('0.01000000000'),), (Decimal('0.01000000000'),), (Decimal('0.01000000000'),), 
    (Decimal('0.01000000000'),), (Decimal('0.01000000000'),), (Decimal('0.01000000000'),), 
    (Decimal('1.00000000000'),), (Decimal('1.00000000000'),), (Decimal('1.00000000000'),), 
    (Decimal('1.00000000000'),), (Decimal('1.00000000000'),)]
 

Спасибо, что помогли мне

Ответ №1:

Метод набора запросов values_list возвращает кортежи по умолчанию, поэтому ваш lista список не является списком десятичных знаков Decimal(‘0.01’). Это список из 1-кортежей (десятичных (‘0.01’),), и вы не можете их суммировать.

Добавьте параметр flat=True в вызов values_list, чтобы получить список отдельных значений вместо 1-кортежей.

 assets = Post.objects.filter(Asset="BTC", Utente="1").values_list('Quantit', flat=True)
lista = list(assets)
somma = sum(lista)