2016-12-15 114 views
0

widthformat自動舍入。 但是,如果可能的話,我希望在模板標記中執行一次除法並舍入n個小數位。 例如:Django模板過濾器:將floatformat應用於widthratio

<h4>Strike Rate: {% widthratio selected_replies user.projectreply_set.count 100 %}</h4> 

當前它返回一個整數。

我該如何在這裏應用floatformat,還是我需要在視圖中完成這項工作?

使用模型

class UserProfile(models.Model): 
    .... 
    .... 
    def get_strike_rate(self): 
     selected_replies = self.user.projectreply_set.filter(is_selected_answer=True).count() 
     my_replies = self.user.projectreply_set.count() 
     if my_replies >0: 
      return round((selected_replies/my_replies)*100.0,2) 
     else: 
      return 0 

回答

1

據我瞭解那裏的另一種方法是沒有標準的Django過濾出。 但你有幾個選擇。首先是你所說的在視圖中做數學。 另一種是採用custom template filter

from django import template 
register = template.Library() 

@register.filter 
def div(value, div): 
    return round((value/div) * 100, 2) 

在模板中,您可以使用這種方式:

{{ a|div:b }} 

第三選擇,如果你正在使用Django 1.8和少django-mathfilters你可以嘗試使用它的組合div和mult過濾器和Django floatformat過濾器。

+0

一些偉大的技巧在這裏謝謝! – codervince