Django admin 如何以百分比显示进度条

C.K*_*.K. 1 html python django-admin

在 Django 内置管理站点中,如何在“更改列表”页面和“更改表单”页面中将进度条显示为字段?

C.K*_*.K. 11

例如:

  1. percentage_paid在模型中创建方法来计算结果并呈现 HTML 元素。
# models.py

class SomeModel(models.Model):
    ....
    def percentage_paid(self):
        if self.paid_amount and self.final_price:
            percentage = round((self.paid_amount / self.final_price * 100), 2)
        else:
            percentage = 0
        return format_html(
            '''
            <progress value="{0}" max="100"></progress>
            <span style="font-weight:bold">{0}%</span>
            ''',
            percentage
        )
Run Code Online (Sandbox Code Playgroud)
  1. 将此方法字段添加'percentage_paid'readonly_filds
  2. 同时,list_display如果要在更改列表页面中显示,或者fields如果要在更改表单页面中显示,请将其添加到。我将它添加fieldsets到自定义我的更改表单。
# admin.py

class CaseAdmin(CommonInfoAdmin):
    fieldsets = CommonInfoAdmin.fieldsets + (
        ('Sales Summary', {
            'fields': (
                ....
                ('final_price', 'paid_amount', 'balance', 'percentage_paid'),
                ....
            )
        }),
    )
    readonly_fields = [
        ....
        'percentage_paid',
    ]
    list_display = (
        ....
        'percentage_paid'
    )
Run Code Online (Sandbox Code Playgroud)

结果:

  • 更改列表

更改列表

  • 更改表格

更改表格