Как я могу получить доступ к подсчету поля в модели Django?
Я хочу отобразить общую выручку, которая равна общей цене, а общая цена - это поле в модели назначений. Мне нужен подсчет этого конкретного поля, чтобы я мог отобразить его в html. HELP!
Итак, в вашем подходе есть несколько проблем.
Во-первых, count()
не вычисляет сумму, а подсчитывает количество записей. Однако это хорошее начало, поскольку оно агрегирует записи в вашей базе данных.
Во-вторых, .filter(total_price = Appointment.total_price)
не имеет никакого смысла. С помощью этого оператора вы сравниваете значение db с типом поля. Кроме того, вы не хотите фильтровать свои записи, если хотите агрегировать все строки.
В-третьих, чтобы составить сумму, вам потребуется числовой тип данных. Однако total_price
является текстовым типом данных (CharField
). Вам необходимо использовать числовое поле (например, IntegerField
для целочисленной суммы или DecimalField
для десятичной суммы с фиксированным количеством знаков):
total_price = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True)
Обратите внимание, что изменение типа данных потребует от вас миграции, и преобразование текстового типа данных в числовой, скорее всего, не удастся. Однако работа с такого рода миграцией выходит за рамки данного вопроса.
Теперь, когда у вас есть числовой тип данных, вы можете делать числовые агрегации:
from django.db.models import Sum
revenue = Appointment.objects.aggregate(revenue=Sum('total_price'))['revenue']