如何显示一个非常简单的统计栏/图 寻找一个django包,方便实施 我希望它在内部管理员更改页面或显示为管理员内联的模型中 感谢
答案 0 :(得分:5)
您不需要任何包来执行此操作。您可以使用两个<div>
和一些CSS样式显示此类图表:
class StatsAdmin(admin.ModelAdmin):
list_display = ('name', 'total', 'passed', 'failed', 'pass_fail')
def pass_fail(self, obj):
if not obj.total:
return ('<div style="width: 100px; height: 10px; border:'
'1px solid black"></div>')
percent_passed = int(obj.passed * 100.0 / obj.total)
return ('<div style="width: 100px; height: 10px; '
'border: 1px solid black; background: red">'
'<div style="width: %spx; height: 10px; '
'background: green"></div>'
'</div>' % percent_passed)
pass_fail.allow_tags = True
pass_fail.short_description = 'Pass / Fail'
答案 1 :(得分:0)
pass_fail.allow_tags 不再适用于Django 1.9及更高版本。
因此我通过使用 mark_safe方法
更改了相同的代码from django.utils.safestring import mark_safe
class StatsAdmin(admin.ModelAdmin):
list_display = ('name', 'total', 'passed', 'failed', 'pass_fail')
def pass_fail(self, obj):
if not obj.total:
return mark_safe('<div style="width: 100px; height: 10px; border:'
'1px solid black"></div>')
percent_passed = int(obj.passed * 100.0 / obj.total)
return mark_safe('<div style="width: 100px; height: 10px; '
'border: 1px solid black; background: red">'
'<div style="width: %spx; height: 10px; '
'background: green"></div>'
'</div>' % percent_passed)
pass_fail.short_description = 'Pass / Fail'