Ошибка Объект 'FloatField' не имеет атрибута 'aggregate' - в отчете на Django с суммой итогов

Я пытаюсь сформировать список с общим количеством продаж за месяц в текущем году. В моей модели у меня есть поле total, которое является итогом каждой продажи. Я создаю цикл (for) из 12 проходов, по одному на каждый месяца, и хочу получить итог каждого из месяцев.

.

Это модель

class Sale(models.Model):
    cli = models.ForeignKey(Client, on_delete=models.CASCADE)
    date_joined = models.DateField(default=datetime.now)
    subtotal = models.DecimalField(default=0.00, max_digits=9, decimal_places=2)
    iva = models.DecimalField(default=0.00, max_digits=9, decimal_places=2)
    total = models.DecimalField(default=0.00, max_digits=9, decimal_places=2)

    def __str__(self):
        return self.cli.names
    
    def toJSON(self):
        item = model_to_dict(self)
        item['cli'] = self.cli.toJSON()
        item['subtotal'] = format(self.subtotal, '.2f')
        item['iva'] = format(self.iva, '.2f')
        item['total'] = format(self.total, '.2f')
        item['date_joined'] = self.date_joined.strftime('%Y-%m-%d')
        item['det'] = [i.toJSON() for i in self.detsale_set.all()]
        return item

    class Meta:
        verbose_name = 'Venta'
        verbose_name_plural = 'Ventas'
        ordering = ['id']

Это вид, в котором происходит ошибка...

from django.views.generic import TemplateView
from datetime import datetime
from django.db.models.functions import Coalesce
from django.db.models import *
from Curso3App.models import Sale


class DashboardView(TemplateView):
    template_name= 'Curso3App/dashboard.html'

    def get_GraficoVentasPorMes(self):
        data=[]
        year = datetime.now().year
        
        for mes in range(1,13):
            total =  Sale.objects.filter(date_joined__year = year,date_joined__month = mes)            
            total = total.aggregate(r = Coalesce(Sum('total'), 0)).get('r',0).output_field=FloatField()
            #total = total.aggregate(r = Coalesce(Sum('total'), 0)).get('r',0).output_field=FloatField()
            data.append(total)    
            print('total ',total)  
        return data
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['panel'] = 'Panel de Administracion'
        context['GraficoVentasPorMes']=self.get_GraficoVentasPorMes()

        return context

Это ошибка

AttributeError at /Dashboard/ 'FloatField' object has no attribute 'aggregate' Метод запроса: Запрос GET URL: http://127.0.0.1:8000/Dashboard/ Версия Django: 4.0.4 Исключение Тип: AttributeError Exception Value: 'FloatField' object has no атрибут 'aggregate' Исключение Местоположение: C:\Users\HP\Documents\ProyectosDjango\Curso3\Curso3\Curso3App\views\Dashboard\views.py, строка 17, in get_GraficoVentasPorMes Python Исполняемый файл: C:\Users\HP\AppData\Local\Programs\Python\Python310\python.exe Версия Python: 3.10.4 Путь к Python: ['C:\Users\HP\Documents\ProyectosDjango\Curso3\Curso3', 'C:\Users\HP\AppData\Local\Programs\Python\Python310\python310.zip', 'C:\Users\HP\AppData\Local\Programs\Python\Python310\DLLs', 'C:\Users\HP\AppData\Local\Programs\Python\Python310\lib', 'C:\Users\HP\AppData\Local\Programs\Python\Python310', 'C:\Users\HP\AppData\Local\Programs\Python\Python310\lib\site-packages']. Время сервера: Tue, 24 May 2022 20:33:19 +0000

.

А в VisualCode Terminal выдает такую ошибку

Метод запроса: GET Запрос URL: http://127.0.0.1:8000/Dashboard/

.

Django Version: 4.0.4 Версия Python: 3.10.4 Установленные приложения: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'widget_tweaks', 'Curso3App', 'homepage', 'login', 'reports']. Установленное промежуточное ПО: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'crum.CurrentRequestUserMiddleware']

.

Traceback (последний последний вызов): Файл "C:\Users\HP\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\handlers\exception.py", строка 55, в inner response = get_response(request) Файл "C:\Users\HP\AppData\Local\Programs\Python\Python\Python310\lib\site-packages\django\core\handlers\base.py", строка 197, в _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\HP\AppData\Local\Programs\Python\Python310\lib\site-packages\django\views\generic\base.py", строка 84, в view return self.dispatch(request, *args, **kwargs) File "C:\Users\HP\AppData\Local\Programs\Python\Python310\lib\site-packages\django\views\generic\base.py", строка 119, в dispatch return handler(request, *args, **kwargs) Файл "C:\Users\HP\AppData\Local\Programs\Python\Python310\lib\site-packages\django\views\generic\base.py", строка 185, в get context = self.get_context_data(**kwargs) Файл "C:\Users\HP\Documents\ProyectosDjango\Curso3\Curso3\Curso3App\views\Dashboard\views.py", строка 25, в get_context_data context['GraficoVentasPorMes']=self.get_GraficoVentasPorMes() File "C:\Users\HP\Documents\ProyectosDjango\Curso3\Curso3\Curso3App\views\Dashboard\views.py", строка 17, в get_GraficoVentasPorMes total = total.aggregate(r = Coalesce(Sum('total'), 0)).get('r',0).output_field=FloatField()

.

Тип исключения: AttributeError at /Dashboard/ Exception Value: 'FloatField' object has no attribute 'aggregate'

Я использую это выражение в представлении, которое казалось мне правильным, но оно выдает мне ошибку ошибку данных агрегата и миксина. Я не знаю, что делать....

.
total =  Sale.objects.filter(date_joined__year = year,date_joined__month = mes)            
total = total.aggregate(r = Coalesce(Sum('total'), 0)).get('r',0).output_field=FloatField()
Вернуться на верх