使用函数更改 ModelSerializer 字段键
Change ModelSerializer field key with function
我有一个简单的 Django Rest Framework ModelSerializer,用于具有字段 "name" 的模型。
我想序列化它,所以名称是值,其清理后的名称是以下方式的键:
"results": [
{
"mymodel1" : "My Model 1"
},
{
"mymodel2" : "My Model 2"
}]
我目前有:
class ModelSimpleSerializer(serializers.ModelSerializer):
keyname = serializers.SerializerMethodField('get_model_keyname')
class Meta:
model = myModel
fields = (
'keyname',
)
def get_model_keyname(self,obj):
keyname = obj.name
keyname = keyname .lower()
keyname = keyname .replace(" ", "")
return keyname
哪个returns:
"results": [
{
"keyname" : "mymodel1"
},
{
"keyname" : "mymodel2"
}]
有什么想法吗?
谢谢!
你能试试这个吗
class ModelSimpleSerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField()
class Meta:
model = myModel
fields = (
'name',
)
def get_name(self,obj):
keyname = obj.name
keyname = keyname .lower()
keyname = keyname .replace(" ", "")
return keyname
试试这个
class ModelSimpleSerializer(serializers.Serializer):
def to_representation(self, obj):
keyname = obj.name.lower().replace(" ", "")
return {
keyname: obj.name,
}
请注意,这将是只读序列化程序。但它会满足你的要求
objects = myModel.objects.all()
ModelSimpleSerializer(objects.first()).data
# {"mymodel1" : "My Model 1"}
ModelSimpleSerializer(objects, many=True).data
# [{"mymodel1" : "My Model 1"}, {"mymodel2" : "My Model 2"}]
我有一个简单的 Django Rest Framework ModelSerializer,用于具有字段 "name" 的模型。 我想序列化它,所以名称是值,其清理后的名称是以下方式的键:
"results": [
{
"mymodel1" : "My Model 1"
},
{
"mymodel2" : "My Model 2"
}]
我目前有:
class ModelSimpleSerializer(serializers.ModelSerializer):
keyname = serializers.SerializerMethodField('get_model_keyname')
class Meta:
model = myModel
fields = (
'keyname',
)
def get_model_keyname(self,obj):
keyname = obj.name
keyname = keyname .lower()
keyname = keyname .replace(" ", "")
return keyname
哪个returns:
"results": [
{
"keyname" : "mymodel1"
},
{
"keyname" : "mymodel2"
}]
有什么想法吗?
谢谢!
你能试试这个吗
class ModelSimpleSerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField()
class Meta:
model = myModel
fields = (
'name',
)
def get_name(self,obj):
keyname = obj.name
keyname = keyname .lower()
keyname = keyname .replace(" ", "")
return keyname
试试这个
class ModelSimpleSerializer(serializers.Serializer):
def to_representation(self, obj):
keyname = obj.name.lower().replace(" ", "")
return {
keyname: obj.name,
}
请注意,这将是只读序列化程序。但它会满足你的要求
objects = myModel.objects.all()
ModelSimpleSerializer(objects.first()).data
# {"mymodel1" : "My Model 1"}
ModelSimpleSerializer(objects, many=True).data
# [{"mymodel1" : "My Model 1"}, {"mymodel2" : "My Model 2"}]