Как это исправить Ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам придется добавить явное приведение типов - PullRequest
0 голосов
/ 04 октября 2019
already_transferred = Transfer.objects.all().filter(transferred_by=request.user, account_id=id).aggregate(total=Coalesce(Sum('amount'), 0))

и сервер выдает эту ошибку

function sum(text) does not exist
LINE 1: SELECT COALESCE(SUM("API_insidetransfer"."amount"), 0) AS "a...
                        ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

вот моя модель

class Transfer(models.Model):
    transferred_by = models.CharField(max_length=120)
    account_id = models.CharField(max_length=120)
    amount = models.CharField(max_length=120, default=0)
    created_on = models.DateTimeField(auto_now=True)

как я могу это исправить?

1 Ответ

0 голосов
/ 04 октября 2019

Проблема в том, что ваш amount является CharField. Вы не можете суммировать charfields. Например, какова сумма 'foo' и 'bar'.

Таким образом, вы должны решить проблему на уровне модели: make amount a DecimalField (или IntegerField). Например:

class Transfer(models.Model):
    transferred_by = models.CharField(max_length=120)
    account_id = models.CharField(max_length=120)
    amount = <b>modelsDecimalField(max_digits=12, decimal_places=2, default=0)</b>
    created_on = models.DateTimeField(auto_now=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...