Вот что я использую (кстати, мы показываем только десятичные дроби, а не числа с плавающей запятой):
@register.filter
def as_percentage_of(part, whole):
try:
return "%d%%" % (float(part) / whole * 100)
except (ValueError, ZeroDivisionError):
return ""
Используйте это так:
Monkeys constitute {{ monkeys|as_percentage_of:animals }} of all animals.
где если у обезьян 3, а у животных 6, вы получите:
50%