جداسازی سه رقم سه رقم در Django

برای جداسازی سه رقم سه رقم اعداد در جنگو دو راه وجود دارد .

راه اول استفاده USE_THOUSAND_SEPARATOR که در تنظیمات جنگو قرار دارد
راه دوم استفاده از humanize در قسمت تمپلیت
هر دو روش با زبان فارسی سازگاری ندارد .
زمانی که در قسمت تنظیمات جنگو

 LANGUAGE_CODE = 'en-us'

است ، میتوان از

USE_THOUSAND_SEPARATOR = True

استفاده کرد تا اعداد به صورت سه رقم سه رقم جداسازی شوند
ولی وقتی

LANGUAGE_CODE = 'fa-ir'

شود ، نمیتوان از این قابلیت استفاده کرد.
همچنین زمانی که زبان جنگو فارسی است نمیتوان از روش دوم استفاده کرد .
ابتدا در قسمت INSTALLED_APPS در قسمت تنظیمات

django.contrib.humanize

را اضافه کنید
سپس در قسمت تمپلیت

{% load humanize %}
{{ myNumber|intcomma }}

را فراخوانی و استفاده کنید که البته با زبان فارسی مشکل دارد .

1 Like

من خودم در زبان فارسی در جنگو با این مشکل برخورد کردم ، باید چی کار کنم، لطفا راهنمایی کنید.

برای حل این مشکل میشه از تمپلیت تگ و فیلتر کاستوم استفاده کرد

# base_tags.py
from django import template
register = template.Library()

@register.filter
def persian_intcomma(value):
        str_value = str(value)[::-1]
        new_value = ''
        for i in range(len(str_value)):
            new_value += str_value[i]
            if (i+1) % 3 == 0 and i != len(str_value) - 1:
                new_value += ','
        return new_value[::-1]
<!-- main.html -->
{% load base_tags %}
{{ myNumber|persian_intcomma }}