【问题标题】:Django - how to show a mathematic result as percentage in dango adminDjango - 如何在 django admin 中将数学结果显示为百分比
【发布时间】:2022-07-06 08:18:19
【问题描述】:

我创建了一个模型,该模型有一个计算月利润百分比的字段,结果是一个四舍五入到小数点后两位的浮点数,例如 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')

【问题讨论】:

    标签: django


    【解决方案1】:

    您可以将其添加为自定义字段:

    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') + ' %')
    

    【讨论】:

      【解决方案2】:

      P.Naoum's answer的改进版:

      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%}"
      

      【讨论】:

        猜你喜欢
        • 2019-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        • 2021-11-30
        • 2019-10-22
        • 1970-01-01
        • 2019-09-16
        相关资源
        最近更新 更多