2010-12-01 64 views
3

我有一個字段的Django模型價格:Django:在輸入表單中允許FloatField或IntegerField?

class Book(models.Model): 
    title = models.CharField(max_length=200) 
    price = models.FloatField(null=True, blank=True) 

的問題是,我的用戶可能輸入的價格爲245或245.00,而我希望系統能夠處理任何一種。

我可以做點聰明的事嗎?

+1

它不起作用? `float(245)`是`245.00` ... – 2010-12-01 18:23:05

回答

4

我不明白你爲什麼需要做任何事情。浮點數不必具有浮點組件 - 245與浮點數245.00一樣有效。

我會第二maikhoepfel的建議,你不使用浮動價格,但。浮點不能精確地表示某些十進制值 - 這是標準IEEE浮點算法的限制。但是,我建議您使用DecimalField來替代,因爲這對於具有固定小數位數值(如價格)的值非常理想。

+0

正是我需要的。謝謝! – AP257 2010-12-01 19:08:56

0

處理價格的最佳做法通常決定您應該使用IntegerField,因爲您可能會遇到時髦的四捨五入/有限的精度錯誤,否則。只是除以/ 100。

+0

-1:在django中有一個models.DecimalField在這種情況下。 – 2010-12-01 18:50:56

相關問題