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")