Уменьшить большое число до intword в Django без редактирования шаблона - PullRequest
0 голосов
/ 25 декабря 2018

Я занимаюсь разработкой веб-приложения, которое отображает HTML-таблицу с использованием django, django-tables2 и Bootstrap4.У меня есть столбец AUM, который содержит очень большие числа (до миллиардов).В моем models.py соответствующая модель использует models.Interfield() для AUM.

class MyModel(models.Model):
    ...
    AUM = models.IntegerField(null= True, blank= True)
    ...

Используя django-tables2 и Bootstrap4, эта модель преобразуется в таблицу и отображается в шаблон с использованием

{% render_table table %}

Числа, отображаемые в соответствующем столбце a, отображаются в необработанном формате, например, в 1000000000. Я хочу сделать его более читабельным для человека.Я нашел два решения для разделения тысяч

Я также видел, что есть что-то похожее на intcomma, равное intword, и оно преобразует, например, 1000000 в 1 миллион, что, на мой взгляд, еще более читабельно для человека. Как и в случае с intcomma, это не жизнеспособное решение для меняВот почему я ищу глобальную настройку типа USE_THOUSAND_SEPARATOR = True, однако для отображения 1000000 как 1 миллион (или млн.), а не 1 000 000.

1 Ответ

0 голосов
/ 29 декабря 2018

Django-tables2 позволяет использовать TemplateColumn для использования языка шаблонов django для ячейки.Для этого необходимо создать пользовательскую таблицу:

# settings.py

INSTALLED_APPS = (
    # ...
    "django.contrib.humanize",
    "django_tables2"
    # ...
)


# tables.py

import django_tables2 as tables


class MyTable(tables.Table):
    AUM = tables.TemplateColumn(
        template_code="{% load humanize %}{{ value | intword }}"
    )

    class Meta:
        model = MyModel
        sequence = ("AUM", "...")  # using "..." here will automatically add the remaining columns of the model to the table.

# views.py

class MyView(SingleTableView):
    table_class = MyTable
...