Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django Rest框架中序列化字符串而不进行更改?_Python_Json_Django_Serialization_Django Rest Framework - Fatal编程技术网

Python 在Django Rest框架中序列化字符串而不进行更改?

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”: [{“名称”:“

我使用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:

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 } ]}


这是完全合理的,因为您正在将字段转换为本机类型。您所希望的完全绕过了序列化过程,只是一个很容易失败的盲附加。