#django #django-rest-framework
#django #django-rest-framework
Вопрос:
У меня есть сериализатор, который я заполняю с помощью функции. Итак, я складываю список этого конкретного сериализатора в массив.
Как мне преобразовать этот массив serializer в ListSerializer, скажем?
Вот мой код:
serializers.py
class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = models.Course
fields = (
'name',
)
class ErrorSerializer(serializers.Serializer):
error = serializers.CharField(max_length=100)
class Meta:
fields=(
'error',
)
class EqSerializer(serializers.Serializer):
course = CourseSerializer(many=False)
error = ErrorSerializer(many=False)
api.py
...
for c in serializer.validated_data:
course = models.Course.objects.filter(id=1)#simplifying
if len(course)==0:
error="No Courses Found"
elif len(course)>1:
error="Too many courses"
else:
x = serializers.CourseSerializer(course[0])
e = serializers.ErrorSerializer(data={'error':'none'} )
e.is_valid()
equate = serializers.EqSerializer(data={'course':x.data,'error':e.data})
ferr.append(equate) #ferr is my array of EqSerializer
resp = serializers.EqSerializer(data=ferr,many=True)#problem is here
Как мне превратить это ferr
в serializers.EqSerializer
список
Комментарии:
1. Можете ли вы объяснить текущую проблему?
2. @JPG когда я пытаюсь преобразовать
ferr
в ListSerializer, при попытке отправитьresp.data
ответ происходит сбой
Ответ №1:
На случай, если кто-то столкнется с такой же проблемой, вот решение, просто создайте массив словарей, которые генерируют ListSerializer, и он должен работать
for c in serializer.validated_data:
course = models.Course.objects.filter(id=1)#simplifying
if len(course)==0:
error="No Courses Found"
elif len(course)>1:
error="Too many courses"
else:
x = serializers.CourseSerializer(course[0])
e = serializers.ErrorSerializer(data={'error':'none'} )
e.is_valid()
ferr.append({'course':x.data,'error':e.data})
resp = serializers.EqSerializer(data=ferr,many=True)