т. (383) 381-86-26

Блог о создании вебсайтов

 

Django-фильтр для форматирования денежных значений

 

Нередко нужен способ для отделения тысяч от сотен, миллионов от тысяч — представление числа выражающего денежную сумму в приятно для глаза виде. Для этого я накидал достаточно примитивный, но работающий Django-filter sexy_money:

@register.filter
def sexy_money(value, n=3, sep=".", fil=" "):
    tail = 0
    stack = []
    counter = n
    value = str(value)
    head = value
    
    if sep in value:
        head, tail = value.split(sep)

    while len(head) >= counter:
        stack.append(head[-counter:])
        head = head[:len(head)-counter]

    stack.append(head)
    stack.reverse()
    return "".join([fil.join(stack).lstrip(fil),
            sep if int(tail) > 0 else '',
            tail if int(tail) > 0 else ''])

Можно его использовать и вне Django. Никаких премудрых зависимостей у него нет. На выходе он выдает строку, так что используй его как средство форматирования, не нужно пихать в выражения =)

Подпишитесь на рассылку, будет интересно!