79π
If you are only concerned with how your FloatField
appears in forms, you can use the template filter floatformat
.
From the Django Docs:
If used with a numeric integer argument, floatformat rounds a number to that many decimal places.
For example, if value = 34.23234, then in your template:
{{ value|floatformat:2 }} # outputs 34.23
22π
If youβd like to actually ensure that your model always gets saved with only two decimal places, rather than just changing the presentation of the model in a template, a custom save method on your model will work great. The example model below shows how.
class MyDataModel(models.Model):
my_float = models.FloatField()
def save(self, *args, **kwargs):
self.my_float = round(self.my_float, 2)
super(MyDataModel, self).save(*args, **kwargs)
Now every time you save your model you will guarantee that the field will only be populated with a float of two decimal places. This can be generalized to rounding to any number of decimal places.
- [Django]-Django logout redirects me to administration page
- [Django]-Django no such table:
- [Django]-"Too many SQL variables" error in django with sqlite3
2π
Since Django 1.8+ you can use a custom validator for FloatField/or any ModelFields:
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},
)
β¦and in your model you can apply it like this:
from django.db import models
class MyModel(models.Model):
even_field = models.FloatField(validators=[validate_decimals])
- [Django]-Google Static Maps URL length limit
- [Django]-How to programmatically call a Django Rest Framework view within another view?
- [Django]-How to test custom django-admin commands