Сериализация поля массива в строку

У меня есть поле массива в моей модели, мне нужно сериализовать и вернуть первые 10 тегов из запроса, получаю ошибку при сериализации данных.

referred - DRF serialize ArrayField as string

serializers.py

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 TagsSearchSerializer(serializers.ModelSerializer):
    tags = StringArrayField()

    class Meta:
        model = Mymodel
        fields = ('id', 'tags')

models.py

class Mymodel(models.Model):
       tags = ArrayField(models.CharField(max_length=64, blank=True),default=list, blank=True)

views.py

class TagsSearchAPIView(APIView):
"""
Used on dropdown menus to dynamically fetch Tags data
"""

    def get(self, request):
        queryset = Mymodel.objects.all()
        tags = queryset.order_by('tags')[:10]
        serialized_tags = TagsSearchSerializer(tags, many=True, context={'request': 
        request})
        results = serialized_tags.data

        return Response({'results': results})

error

 to_representation() takes 1 positional argument but 2 were given

Не нужно передавать ключевое слово self в super().to_representation(obj). Попробуйте следующее

def to_representation(self, obj):
    obj = super().to_representation(obj)
    # convert list to string
    return ",".join([str(element) for element in obj])
Вернуться на верх