Jeff Zzz
Jeff Zzz

Reputation: 77

Django Rest Framework format decimal field to 2 decimal places (for output)

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

Answers (2)

MD. SHIFULLAH
MD. SHIFULLAH

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

Andrey Bogoyavlensky
Andrey Bogoyavlensky

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

Related Questions