Django админ как показывать индикатор в процентах - PullRequest
0 голосов
/ 18 марта 2019

Как на встроенном админском сайте Django можно отобразить индикатор выполнения на страницах списка изменений и страницы формы изменения в виде поля?

1 Ответ

2 голосов
/ 18 марта 2019

Например:

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

Результаты:

  • Список изменений

Change List

  • Изменить форму

Change Form

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...