2010-12-30 7 views
10

Trong một mẫu Django, có cách nào để chuyển đổi một phao thành một số nguyên nếu và chỉ khi nó kết thúc bằng .0?Mẫu Django: Chuyển đổi float thành số nguyên nếu kết thúc bằng 0,0?

Tôi có một trường cho dân số là một phao trong cơ sở dữ liệu của tôi. Đôi khi nó là 'thực sự' một phao, kết thúc .5, nhưng thường xuyên hơn nó kết thúc .0, bởi vì có một số lượng toàn bộ người, và trong những trường hợp tôi muốn chỉ hiển thị một số nguyên.

{{ place.population }} people 

Mọi ý tưởng cho một cách thông minh để làm tròn điều này ở Django?

+0

Âm thanh như một cái gì đó mà bạn sẽ phải làm trong một bộ lọc tùy chỉnh. –

Trả lời

25

Bạn có thể sử dụng floatformat filter với đối số phủ định!

+1

Từ tài liệu: "Sử dụng floatformat không có đối số tương đương với việc sử dụng floatformat với đối số là -1." –

+0

Lưu ý: Điều này sẽ làm tròn các giá trị có nhiều chữ số thập phân hơn đối số âm đã cho! –

1

Bạn có thể viết thẻ mẫu, nhưng tôi khuyên bạn nên đặt phương thức này làm phương pháp trên mô hình của mình.

class Country(models.Model): 

    ... 

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

Sau đó, trong mẫu của bạn, thay vì

{{ obj.population }} 

Bạn sẽ sử dụng này:

{{ obj.get_population }}