In Django models, the DecimalField
is a field type used to store decimal numbers with fixed precision and scale. It is commonly used for fields that require accurate numeric representation, such as financial amounts, quantities, or any data that needs precise decimal values.
Example addition of salary field to the Person model.
class Person(models.Model):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
first_name = models.CharField(max_length=30)
bio = models.CharField(max_length=500, validators=[validate_bio],blank=True, null=True)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES,default="M")
salary = models.DecimalField(max_digits=10, decimal_places=2)
In this example, a DecimalField
named salary
to store the salary of a person as a decimal number is defined. The max_digits
parameter specifies the total number of digits (including both integer and fractional parts), and decimal_places
specifies the number of digits to the right of the decimal point.
Here, after this you need to run the python manage.py makemigrations
and python manage.py migrate
command to make the changes in the database.
python manage.py makemigrations
python manage.py migrate
Lets see the decimal field that was added now :
from datatypedemo.models import Person
p=Person.objects.get(id=1)
vars(p)
Here, the salary field takes the value 5000.00, that was typed as a default value for the field during the migration of the model.
Other than max_digits
and decimal_places
, it can take other parameters such as blank
, null
or default
as done in the IntegerField.
The DecimalField
is a crucial field type in Django models for storing decimal numbers with precision. It provides control over the number of digits and decimal places, making it suitable for scenarios where accurate and consistent decimal representation is needed.