Например:
- Создайте метод
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
)
- Добавьте это поле метода
'percentage_paid'
к readonly_filds
- Между тем, добавьте его в
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'
)
Результаты: