【问题标题】:Django admin how to show a progress bar in percentageDjango管理员如何以百分比显示进度条
【发布时间】:2019-03-17 22:19:30
【问题描述】:

在 Django 内置管理站点中,如何在 Change List 页面和 Change Form 页面中将进度条显示为字段?

【问题讨论】:

    标签: python html django-admin


    【解决方案1】:

    例如:

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

    结果:

    • 更改列表

    • 更改表格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多