AttributeError: объект ‘QuerySet’ не имеет атрибутов ‘objects’ при использовании count и sum

#python #django

#python #django

Вопрос:

У меня проблема с отображением общего количества моего списка. Я хочу подсчитать общее количество моей переменной list_value ниже, но, похоже, она возвращает ошибку.

 AttributeError: 'QuerySet' object has no attribute 'objects' when using count
  

views.py

 @login_required(login_url='log_permission')
def data_table(request):
   if request.method=='POST':

    province = request.POST['province']
    municipality = request.POST['municipality']

    list_value = 
    Person.objects.filter(province=province,municipality=municipality)
    final_value = list_value.objects.count()  //here is the problem
    total =dats.objects.aggregate(Sum('amount'))
    print(final_value)
    print(total)
    return render(request, 'data_table.html')
  

Модели

 class Person(models.Model):
   covid_id = models.CharField(max_length=50)
   firstname = models.CharField(max_length=50)
   middle = models.CharField(max_length=50,blank=True, null=True)
   lastname   = models.CharField(max_length=50,blank=True)
   extension  = models.CharField(max_length=50,blank=True, null=True)
   province  = models.CharField(max_length=50)
   municipality  = models.CharField(max_length=50)
   barangay = models.CharField(max_length=50)
   remarks = models.CharField(max_length=50)
   amount = models.CharField(max_length=50)
   remarks_miray = models.CharField(max_length=50)
   count = models.CharField(max_length=50)
  

Ответ №1:

Вам не нужно вызывать object , просто вызовите count() метод

 count_value = list_value.count() 
  

Комментарии:

1. Как насчет суммы? Я использовал variable_name.aggregate(Sum(‘сумма’)), но он возвращает вывод следующим образом {‘сумма__сумма’: 167200.0} . Я просто хочу переменную 167200.0

2. Используйте get() метод как variable_name.aggregate(Sum('amount')).get("amount__sum")

Ответ №2:

list_value уже является набором запросов, а не моделью Django. поэтому .objects недоступен. вы можете просто выполнить итерацию через list_value . дополнительная информация здесь: https://docs.djangoproject.com/en/3.1/topics/db/queries/#retrieving-objects