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%}"
Вернуться на верх