只允许正十进制数

Hou*_*man 33 python django

在我的Django模型中,我创建了一个十进制字段,如下所示:

price = models.DecimalField(_(u'Price'), decimal_places=2, max_digits=12)
Run Code Online (Sandbox Code Playgroud)

显然,价格为负或零是没有意义的.有没有办法将十进制数限制为只有正数?

或者我是否必须使用表单验证来捕获它?

Ala*_*air 67

使用MinValueValidator.

price = models.DecimalField(_(u'Price'), decimal_places=2, max_digits=12, validators=[MinValueValidator(Decimal('0.01'))])
Run Code Online (Sandbox Code Playgroud)

  • 这适用于表单字段,但我没有为模型字段测试`min_value = Decimal('0.01')`.它没有记录在[model field docs](https://docs.djangoproject.com/en/1.7/ref/models/fields/)中. (8认同)
  • 我纠正了。我的评论回答了有关表单验证的最后一个问题。`min_value` 不适用于 models.DecimalField。 (3认同)
  • 或者你可以添加 `min_value=Decimal('0.01')` (2认同)