Django: разрешить FloatField или IntegerField в форме ввода? - PullRequest
4 голосов
/ 01 декабря 2010

У меня есть модель Django с полем для цены:

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

Проблема заключается в том, что мои пользователи могут ввести цену 245 или 245,00, и я хочу, чтобы система могла справиться с любой из них.

Могу ли я сделать что-нибудь умное, чтобы разрешить это?

Ответы [ 2 ]

5 голосов
/ 01 декабря 2010

Я не понимаю, зачем тебе вообще что-то делать. Число с плавающей запятой не обязательно должно иметь компонент с плавающей точкой - 245 является таким же допустимым, как 245.00.

Я бы рекомендовал Майхоэпфелу не использовать плавающие цены. Плавающая точка не может точно представлять некоторые десятичные значения - это ограничение стандартного алгоритма IEEE с плавающей точкой. Однако я рекомендую вам использовать DecimalField, поскольку это идеально для значений с фиксированным числом десятичных разрядов, таких как цены.

0 голосов
/ 01 декабря 2010

Лучшая практика работы с ценами обычно диктует, что вы все равно должны использовать IntegerField, так как в противном случае вы можете столкнуться с ошибками округления / ограниченной точности.Просто разделите / умножьте на 100.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...