Django Rest框架使用现有的布尔字段在序列化程序数据中添加新字段

Django Rest框架使用现有的布尔字段在序列化程序数据中添加新字段,django,serialization,Django,Serialization,我有两个序列化程序类来序列化用户数据 class CurrentUserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ('username', 'email', 'id','first_name','last_name',"is_staff","is_superuser") class userProfileSerializer(serializers

我有两个序列化程序类来序列化用户数据

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__'
我可以得到下面给出的json数据

{
        "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"
    }
我想控制的是超级用户。如果是真的,则希望添加新字段,即“角色”:“ADMIN”,并希望获得类似json的内容

{
            "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"
        }
您可以使用SerializerMethodField:


这是django rest框架吗?Yes@Kurohige对不起,我有个问题。
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")