Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change the order of fields in normal serializer response

Using Django REST framework I want to change the serializer response fields order dynamically by a list of given field names.

Output from DRF is the following:

{
  "items": [
    {
      "name": "John",
      "age": 25,
      "id": 3
    },
    {
      "name": "Sam",
      "age": 20,
      "id": 8
    }
  ]
}

My filed order list is:

order_list = ['id', 'age', 'name']

What I want is:

{
  "items": [
    {
      "id": 3,
      "age": 25,
      "name": "John"
    },
    {
      "id": 8,
      "age": 20,
      "name": "Sam"
    }
  ]
}

Serializer code:

class ItemSerializer(serializers.Serializer):
    name = serializers.CharField()
    id = serializers.IntegerField()
    age = serializers.IntegerField()    
like image 730
shaan Avatar asked Oct 16 '25 09:10

shaan


1 Answers

To change the ordering, you will need to change the field definition in the serializer meta class.

class ItemSerializer(serializers.Serializer):
    name = serializers.CharField()
    id = serializers.IntegerField()
    age = serializers.IntegerField()

    class Meta(object):
         fields = ( # this needs to be ordered properly
             'id',
             'age',
             'name',
         )
like image 134
arjunattam Avatar answered Oct 18 '25 23:10

arjunattam



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!