преобразовать строку в целое число в шаблонах Django - PullRequest
0 голосов
/ 30 апреля 2018

Я получаю сообщение об ошибке при попытке умножить приведенное ниже в шаблонах django (умножение - это пользовательский тег) -

{{ contact.cost|add:"0" |multiply:contact.rate }}

стоимость относится к типу varchar, а скорость - к десятичному типу в models.py. Я попытался добавить add: «0» для преобразования строки в целое число, а затем умножения, но все равно выдает ошибку.

can't multiply sequence by non-int of type 'decimal.Decimal'

Что не так? Все еще очень плохо знакомы с django, пожалуйста, помогите.

Edit-

def multiplystr(x, y):
    val = Decimal(x)
    return Decimal(val * y)

error-

[<class 'decimal.ConversionSyntax'>]
InvalidOperation

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Попробуйте это:

def multiplystr(x, y):
    valX = Decimal(x)
    valY = Decimal(y)
    return Decimal(valX * valY)
0 голосов
/ 30 апреля 2018

В Django нет ничего, что могло бы преобразовать строки в целые числа.

Лучше всего либо исправить это в представлении (исправляя так, чтобы contact.cost было целым числом), либо в вашей пользовательской функции multiply, чтобы она могла обрабатывать строки.

Что-то вроде ниже должно работать

def multiply(value, arg):
   value_as_int = int(value)
   return int(value_as_int * arg)
...