def validate_decimals(value):
try:
return round(float(value), 2)
except:
raise ValidationError(
_('%(value)s is not an integer or a float number'),
params={'value': value},
)
...在您的模型中,您可以这样应用它:
from django.db import models
class MyModel(models.Model):
even_field = models.FloatField(validators=[validate_decimals])
3条答案
按热度按时间ht4b089n1#
如果您只关心
FloatField
在表单中的显示方式,可以使用模板过滤器floatformat
。来自Django文档:
如果与数字整型参数一起使用,floatformat会将数字四舍五入到小数位数。
例如,如果value = 34.23234,则在模板中:
bis0qfac2#
如果你真的想确保你的模型保存时只保留两位小数,而不仅仅是改变模板中模型的显示方式,那么在你的模型上定制一个保存方法会很好。下面的示例模型展示了如何实现。
现在,每次保存模型时,您都可以保证字段只填充两位小数的浮点数,这可以推广到舍入到任意小数位数。
s8vozzvw3#
从Django 1.8+开始,你可以为FloatField/或任何ModelField使用自定义验证器:
...在您的模型中,您可以这样应用它: