Тип данных операнда nvarchar недопустим для оператора суммы - PullRequest
0 голосов
/ 16 июня 2020

Я попытался суммировать данные из моей базы данных, используя приведенный ниже код.

models.py

class Income(models.Model):
    Total= models.CharField(max_length=512,null =True,blank=True)

views.py:

Total_income = Income.objects.filter(Q(title='Salary')| Q(title='Bonus')).aggregate(Sum('Total'))

Но я получил эта ошибка при попытке запустить.

('42000', '[42000] [Microsoft] [ODB C Driver 17 для SQL Server] [SQL Server] Тип данных операнда nvarchar недопустим для оператора суммы. (8117) (SQLExecDirectW); [42000] [Microsoft] [ODB C Driver 17 для SQL Server] [SQL Server] Операторы не могут быть подготовлены. (8180) ')

Я новичок в Python и Django, поэтому очень ценю вашу помощь в этом.

1 Ответ

1 голос
/ 16 июня 2020

Вы пытаетесь SUM CharField не Integer, поэтому вы видите ошибку. Поэтому вам нужно сделать это поле целым числом или, если по какой-либо причине вам нужно, чтобы оно оставалось как CharField:

from django.db.models.functions import Cast

Income.objects.filter(
    Q(title='Salary')| Q(title='Bonus')
).annotate(
    total_as_float=Cast('Total', FloatField()
).aggregate(Sum('total_as_float'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...