对于具有字段“名称”的模型,我有一个简单的Django Rest Framework ModelSerializer。 我想序列化它,所以名称是值,其清除的名称是按以下方式的键:
List<FileConfigData> configList = new List<FileConfigData>();
foreach (var file in fileConfigs){
var configData = JsonConvert.DeserializeObject<FileConfigData>(File.ReadAllText(CONFIG_FILE_PATH)));
configList.Add(configData);
}
我目前有:
"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
有什么想法吗?
谢谢!
答案 0 :(得分:1)
尝试一下
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"}]
答案 1 :(得分:0)
您可以尝试一下
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