Django admin: как отобразить число с фиксированной длиной?

Это моя модель:

from django.contrib.humanize.templatetags.humanize import intcomma


class Flow(models.Model):
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    
    def df_amount(self):
        return '{intcomma(abs(self.amount)):>12}'
    df_amount.admin_order_field = 'amount'
    df_amount.short_description = 'amount'

В admin.py,

@admin.register(Flow)
class FlowAdmin(admin.ModelAdmin):
    list_display = (
        'df_amount',
    )

Для amount=2800, print(self.df_amount()) дает $ 2,800.00 но $ 2,800.00 отображается в панели администратора, где пробелы в середине были усечены до одного пробела, а не как ожидалось.

Так что мой вопрос в том, как зарезервировать пробелы в середине строки в админ панели? Спасибо!

Вы можете использовать функцию format_html(...),

from django.utils.html import format_html


@admin.register(Flow)
class FlowAdmin(admin.ModelAdmin):
    list_display = (
        'df_amount',
    )

    def df_amount(self, instance):
        return format_html(f'$ {instance.df_amount().replace(" ", " ")}')
Вернуться на верх