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(" ", " ")}')