Django Admin Form中的十进制字段

时间:2011-02-19 11:40:43

标签: django django-models django-admin

我有一个包含字段的模型:

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 Admin界面手动添加一些用户信息,但是当我选择10.5或17.5值时会出现如下错误:

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

我从阅读Django文档中了解到,Admin表单将DecimalField类型视为“文本”输入,但我不确定是否应该查看模型定义或管理表单的自定义。我目前没有在此项目中定义admin.py以进行管理站点自定义。

1 个答案:

答案 0 :(得分:7)

您已将字段选项定义为浮点数。 float 10.5不等于小数Decimal("10.5")

将选项定义为字符串或小数:

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