Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 DjangoRestFramework将项追加到列表字段_Python_Arrays_Django_String_Django Rest Framework - Fatal编程技术网

Python Django DjangoRestFramework将项追加到列表字段

Python Django DjangoRestFramework将项追加到列表字段,python,arrays,django,string,django-rest-framework,Python,Arrays,Django,String,Django Rest Framework,我在将CharField项添加到ListField时遇到了这个问题:结果列表被拆分为单个字符,而不是一个字符串。文件: #serializers.py 类TodoSerializer(serializers.ModelSerializer): key=serializers.IntegerField(source='id') levels=serializers.ListField(source='level')#(a) 类元: 模型=待办事项 字段=['key'、'title'、'desc'、

我在将
CharField
项添加到
ListField
时遇到了这个问题:结果列表被拆分为单个字符,而不是一个字符串。文件:

#serializers.py
类TodoSerializer(serializers.ModelSerializer):
key=serializers.IntegerField(source='id')
levels=serializers.ListField(source='level')#(a)
类元:
模型=待办事项
字段=['key'、'title'、'desc'、'level'、'levels'、'created']
(a) :

#models.py
level=models.CharField(u('level'),最大长度=20)
我希望
列表字段
的行为是,假设级别为
正常
,我希望列表字段显示为
[“正常”]
。但是,它以单个字符的形式出现,如下图所示:

在一句话中,我想将
level
附加到
levels
中,但格式不令人满意


有人能帮忙吗?提前感谢。

实现这一点的一种方法是使用自定义字段。像这样的,

class LevelsField(serializers.Field):

    def to_representation(self, value):
        return [value.level]

    def to_internal_value(self, data):
        # here you need to implement your transform logic
        return ','.join(data)
levels = LevelsField(source='*')
然后你就这样用,

class LevelsField(serializers.Field):

    def to_representation(self, value):
        return [value.level]

    def to_internal_value(self, data):
        # here you need to implement your transform logic
        return ','.join(data)
levels = LevelsField(source='*')

实现这一点的一种方法是使用自定义字段。像这样的,

class LevelsField(serializers.Field):

    def to_representation(self, value):
        return [value.level]

    def to_internal_value(self, data):
        # here you need to implement your transform logic
        return ','.join(data)
levels = LevelsField(source='*')
然后你就这样用,

class LevelsField(serializers.Field):

    def to_representation(self, value):
        return [value.level]

    def to_internal_value(self, data):
        # here you need to implement your transform logic
        return ','.join(data)
levels = LevelsField(source='*')

如果我理解正确,您希望显示为仅具有
级别
值的数组,对吗?将是只读的?不必是只读的,但其他所有内容,是的,
SerializerMethodField
?ArakkalAbu同意如果字段是只读的,这是一个很好的解决方案。我没有注意到OP中提到的这一点。@Cabesuo如果我理解正确,您希望显示为仅具有
级别
值的数组,是否正确?是否将是只读的?不必是只读的,但是其他一切,是的,
SerializerMethodField
?ArakkalAbu同意如果字段是只读的,这是一个很好的解决方案。我没有注意到OP中提到的这一点。@cabesuon