#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