#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)