2010-12-30 8 views
10

W szablonie Django istnieje sposób przekonwertowania wartości zmiennoprzecinkowej na liczbę całkowitą wtedy i tylko wtedy, gdy kończy się na .0?Szablony Django: Konwertuj zmiennoprzecinkowe na całkowite, jeśli kończy się na .0?

Mam pole dla populacji, które jest zmiennoprzecinkowe w mojej bazie danych. Czasem jest to "naprawdę" float, kończący się na .5, ale częściej się kończy .0, ponieważ jest w nim cała masa ludzi, w takich przypadkach wolałbym po prostu pokazywać liczbę całkowitą.

{{ place.population }} people 

Wszelkie pomysły na sprytny sposób obejścia tego w Django?

+0

Brzmi jak coś, co trzeba zrobić w filtrze niestandardowym. –

Odpowiedz

25

Możesz użyć floatformat filter z argumentem ujemnym!

+1

Z dokumentacji: "Używanie floatformat bez argumentu jest równoważne użyciu floatformat z argumentem -1." –

+0

Uwaga: spowoduje to zaokrąglenie wartości o więcej miejsc dziesiętnych niż podany argument ujemny! –

1

Można napisać znacznik szablonu, ale zaleca się wykonanie tej metody w modelu.

class Country(models.Model): 

    ... 

    def get_population(self): 
     if self.population == int(self.population): 
      self.population = int(self.population) 
     return self.population 

Następnie w szablonie, zamiast

{{ obj.population }} 

byłoby użyć tego:

{{ obj.get_population }} 
Powiązane problemy