Python 在Django Rest框架中序列化字符串而不进行更改?
我使用Python的json.dumps()将数组转换为字符串,然后将其存储在Django模型中。我试图弄明白如何让Django的REST框架忽略这个字段并按原样发送它,而不必再次序列化它 例如,如果模型如下所示(两个字段都是CharFields): name=“E:\” 路径\带有\ id=“[{”名称”:“E:\”,“id”:525}” 我希望REST框架在序列化时忽略“path_with_id”,以便JSON输出如下所示: {“名称”:“E:\”,“路径\带有\ ID”: [{“名称”:“E:\”,“id”:525}]} 不是这样的: { “名称”:“E:\”, “带id的路径”:“[{\“name\”:\“E:\\”,\“id\”:525}]” 我尝试创建另一个序列化程序类,该类按“原样”输出它获得的输入,但没有成功: 序列化程序。py:Python 在Django Rest框架中序列化字符串而不进行更改?,python,json,django,serialization,django-rest-framework,Python,Json,Django,Serialization,Django Rest Framework,我使用Python的json.dumps()将数组转换为字符串,然后将其存储在Django模型中。我试图弄明白如何让Django的REST框架忽略这个字段并按原样发送它,而不必再次序列化它 例如,如果模型如下所示(两个字段都是CharFields): name=“E:\” 路径\带有\ id=“[{”名称”:“E:\”,“id”:525}” 我希望REST框架在序列化时忽略“path_with_id”,以便JSON输出如下所示: {“名称”:“E:\”,“路径\带有\ ID”: [{“名称”:“
class PathWithIds(serializers.CharField):
def to_representation(self, value):
return value.path_with_ids
class FolderSerializer(serializers.ModelSerializer):
field_to_ignore = PathWithIds(source='path_with_ids')
class Meta:
model = Folder
fields = ['id', 'field_to_ignore']
import json
class PathWithIds(serializers.CharField):
def to_representation(self, value):
x = json.loads(value)
return x
class FolderSerializer(serializers.ModelSerializer):
array_output = PathWithIds(source='field_to_ignore')
class Meta:
model = Folder
fields = ['id', 'array_output']
请帮忙 在使用REST框架再次序列化数组之前,我使用了一种浪费且令人恶心的方法对数组进行反序列化: 序列化程序。py:
class PathWithIds(serializers.CharField):
def to_representation(self, value):
return value.path_with_ids
class FolderSerializer(serializers.ModelSerializer):
field_to_ignore = PathWithIds(source='path_with_ids')
class Meta:
model = Folder
fields = ['id', 'field_to_ignore']
import json
class PathWithIds(serializers.CharField):
def to_representation(self, value):
x = json.loads(value)
return x
class FolderSerializer(serializers.ModelSerializer):
array_output = PathWithIds(source='field_to_ignore')
class Meta:
model = Folder
fields = ['id', 'array_output']
rest API中的输出:
class PathWithIds(serializers.CharField):
def to_representation(self, value):
return value.path_with_ids
class FolderSerializer(serializers.ModelSerializer):
field_to_ignore = PathWithIds(source='path_with_ids')
class Meta:
model = Folder
fields = ['id', 'field_to_ignore']
import json
class PathWithIds(serializers.CharField):
def to_representation(self, value):
x = json.loads(value)
return x
class FolderSerializer(serializers.ModelSerializer):
array_output = PathWithIds(source='field_to_ignore')
class Meta:
model = Folder
fields = ['id', 'array_output']
{
“名称”:“E:\”,
“数组_输出”:[
{
“名称”:“E:\”,
“id”:525
}
]}
这是完全合理的,因为您正在将字段转换为本机类型。您所希望的完全绕过了序列化过程,只是一个很容易失败的盲附加。