2010-12-30 11 views
10

En una plantilla de Django, ¿hay alguna manera de convertir un flotante en un entero si y solo si termina en 0?Plantillas de Django: ¿Convertir float a entero si termina con .0?

Tengo un campo para población que es un flotador en mi base de datos. A veces es 'realmente' flotante, termina con .5, pero más a menudo termina .0, porque hay un número entero de personas, y en esos casos prefiero mostrar un número entero.

{{ place.population }} people 

¿Alguna idea de una forma inteligente de evitar esto en Django?

+0

Suena como algo que se tendría que hacer en un filtro personalizado. –

Respuesta

25

¡Puede usar el floatformat filter con un argumento negativo!

+1

De la documentación: "Usar floatformat sin argumento es equivalente a usar floatformat con un argumento de -1." –

+0

Nota: ¡Esto redondeará los valores con más decimales que el argumento negativo dado! –

1

Podrías escribir una etiqueta de plantilla, pero te recomendaría hacer de esto un método en tu modelo.

class Country(models.Model): 

    ... 

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

Luego, en su plantilla, en lugar de

{{ obj.population }} 

Se podría utilizar esto:

{{ obj.get_population }}