django管理统计栏/图表。

时间:2015-02-09 12:27:43

标签: django django-admin django-grappelli

如何显示一个非常简单的统计栏/图bars on the right 寻找一个django包,方便实施 我希望它在内部管理员更改页面或显示为管理员内联的模型中 感谢

2 个答案:

答案 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'

Exmple screenshot

答案 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'