Десятичное поле в Django Admin Form - PullRequest
2 голосов
/ 19 февраля 2011

У меня есть модель, которая включает в себя поле:

TAX_CHOICES = (
    (10.5, '10.5%'),
    (17.5, '17.5%'),
    (30, '30%'),
    (33, '33%'),
)

taxBracket = models.DecimalField(max_digits=4, decimal_places=2, choices=TAX_CHOICES, default=10.5)

У меня есть существующие формы Django, которые работают в моем приложении и позволяют пользователям успешно вводить свои налоговые рамки. Однако мне нужно вручную добавить некоторую информацию о пользователе через интерфейс администратора Django, но при выборе значений 10,5 или 17,5 появляется следующее сообщение:

Value Decimal('10.5') is not a valid choice

Из документов Django я понимаю, что форма Admin обрабатывает типы DecimalField как «текстовые» входные данные, но я не уверен, должен ли я искать определение модели или настройку формы Admin. В настоящее время в этом проекте не определен файл admin.py для настройки сайта администратора.

1 Ответ

7 голосов
/ 19 февраля 2011

Вы определили параметры поля как плавающие.Число с плавающей запятой 10.5 не равно десятичному числу Decimal("10.5").

. Определите варианты как строки или как десятичные числа:

TAX_CHOICES = (
    (Decimal("10.5"), '10.5%'),
    (Decimal("17.5"), '17.5%'),
    (Decimal("30"), '30%'),
    (Decimal("33"), '33%'),
)
...