Reputation: 77
I use Django and DRF,I have many decimal fields in models, like
amount = models.DecimalField(max_digits=16, decimal_places=4)
I want format output Two decimal places ,in every serializers field can do this
amount = serializers.DecimalField(max_digits=16, decimal_places=2)
There's an easyer way?
Upvotes: 4
Views: 9954
Reputation: 1749
Both will work for 2 decimal point value:
class ModelASerializer(serializers.ModelSerializer):
id = serializers.IntegerField()
name = serializers.CharField()
decimal_value = serializers.DecimalField(max_digits=5, decimal_places=2)
class Meta:
model = ModelA
fields = ['id', 'name', 'decimal_value']
And:
class ModelASerializer(serializers.Serializer):
id = serializers.IntegerField()
name = serializers.CharField()
decimal_value = serializers.DecimalField(max_digits=5, decimal_places=2)
For more info, please visit: https://www.django-rest-framework.org/api-guide/fields/#decimalfield
Upvotes: 0
Reputation: 156
In DRF there is a way to override only options but not the entire field:
class MySerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ('amount',)
extra_kwargs = {
'amount': {'max_digits': 16, 'decimal_places': 2}
}
Or if you have many same decimal fields you should use your own custom DecimalField with predefined common options.
Upvotes: 14