gpt4 book ai didi

python - Django rest framework 将 ArrayField 序列化为字符串

转载 作者:行者123 更新时间:2023-12-05 05:18:03 25 4
gpt4 key购买 nike

我的模型类中有一个带有“ArrayField”的字段,我希望它作为以逗号分隔的值字符串来回序列化。

模型.py

from django.contrib.postgres.fields import ArrayField

class Test(models.Model):
colors = ArrayField(models.CharField(max_length=20), null=True, blank=True

我遵循了这个解决方案 - https://stackoverflow.com/questions/47170009/drf-serialize-arrayfield-as-string#=

from rest_framework.fields import ListField

class StringArrayField(ListField):
"""
String representation of an array field.
"""
def to_representation(self, obj):
obj = super().to_representation(self, obj)
# convert list to string
return ",".join([str(element) for element in obj])

def to_internal_value(self, data):
data = data.split(",") # convert string to list
return super().to_internal_value(self, data)

在序列化器中:

class SnippetSerializer(serializers.ModelSerializer):
colors = StringArrayField()

class Meta:
model = Test
fields = ('colors')

但出现以下错误 -

TypeError: to_representation() 接受 2 个位置参数,但给出了 3 个

请帮忙。

最佳答案

该错误表明您正在向该方法传递一个附加参数。我注意到 super() 调用不正确。您可以将其替换为:

        obj = super().to_representation(obj)

关于python - Django rest framework 将 ArrayField 序列化为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48330135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com