Как я могу получить доступ к подсчету поля в модели 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']
Вернуться на верх