Reputation: 616
I have two serializer classes to serialize user data.
class CurrentUserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'email', 'id','first_name','last_name',"is_staff","is_superuser")
class userProfileSerializer(serializers.ModelSerializer):
user=CurrentUserSerializer(read_only=True)
class Meta:
model=userProfile
fields='__all__'
I can get json data give in below;
{
"id": 1,
"user": {
"username": "x",
"email": "x",
"id": 5,
"first_name": "x",
"last_name": "x",
"is_staff": false,
"is_superuser": true
},
"date_joined": "2020-04-16T16:50:38.218964+03:00",
"updated_on": "2020-04-16T16:50:38.218996+03:00"
}
I want to control is_superuser. İf it is true ı want add new field which is "role":'ADMIN' and ı want to get json like;
{
"id": 1,
"user": {
"username": "x",
"email": "x",
"id": 5,
"first_name": "x",
"last_name": "x",
"role": "ADMIN",
"is_superuser": true,
"is_staff": false,
},
"date_joined": "2020-04-16T16:50:38.218964+03:00",
"updated_on": "2020-04-16T16:50:38.218996+03:00"
}
Upvotes: 3
Views: 689
Reputation: 1418
you can use SerializerMethodField:
class CurrentUserSerializer(serializers.ModelSerializer):
role = serializers.SerializerMethodField('is_super')
def is_super(self, user):
return "ADMIN" if user.is_superuser else "WHATEVER"
class Meta:
model = User
fields = ('role', 'username', 'email', 'id','first_name','last_name',"is_staff","is_superuser")
Upvotes: 3