Django - как показать математический результат в процентах в dango admin
Я создал модель, которая имеет одно поле, которое вычисляет процент прибыли за месяц, результатом является плавающее число, округленное до 2 знаков, например, 0.50
Я хотел бы иметь в списке администратора в процентах, например. 0.50 будет отображаться как 50.00%, возможно ли это, как я могу этого добиться?
моя модель:
class PortfolioToken(models.Model):
total_today = models.FloatField()
order_value = models.FloatField()
token_price = models.FloatField()
month_profit = models.FloatField(editable=False)
def save(self, *args, **kwargs):
if PortfolioToken.objects.exists():
last = PortfolioToken.objects.latest('id')
# month profit would show as percentage in admin
self.month_profit = round((self.token_price - last.token_price)/last.token_price, 2)
else
...
Мой список администраторов
class PortfolioTokenAdmin(admin.ModelAdmin):
list_display =('total_today', 'order_value', 'token_price', 'month_profit')
Вы можете добавить его в качестве пользовательского поля:
class PortfolioTokenAdmin(admin.ModelAdmin):
fields = ('total_today', 'order_value', 'token_price', 'month_profit', 'percentage')
readonly_fields = ('percentage',)
def percentage(self, obj):
# Return the month_profit as percentage string
return str(format(float(obj.month_profit * 100), '.2f') + ' %')
Усовершенствованная версия ответа П.Наума:
class PortfolioTokenAdmin(admin.ModelAdmin):
fields = ('total_today', 'order_value', 'token_price', 'month_profit', 'percentage')
readonly_fields = ('percentage',)
def percentage(self, obj):
# Return the month_profit as percentage string
return f"{obj.month_profit:.2%}"