#django #django-rest-framework
#django #django-rest-framework
Вопрос:
Я получаю это тело json
{
"skills" : [
"First skill",
"Second skills",
"Third skills"
]
}
У меня нет модели для этого, и я делаю что-то вроде этого. Я прочитал из других сообщений, что в этом случае я мог бы наследовать views.APIView
, что я и пытаюсь сделать.
class SkillsSubscription(serializers.Serializer):
skills = serializers.CharField(required=True,)
и в представлении я делаю что-то вроде этого
class CreateUpdateEmployeeSkillsSubscription_APIView(views.APIView):
permission_classes = []
def post(self, request):
results = SkillsSubscription(request.data,many=True).data
return Response(xxx)
Я получаю исключение, когда использую этот сериализатор. Это исключение.
AttributeError: Got AttributeError when attempting to get a value for field `skills` on serializer `SkillsSubscription`.
The serializer field might be named incorrectly and not match any attribute or key on the `str` instance.
Original exception text was: 'str' object has no attribute 'skills'.
Любые предложения о том, как я мог бы получить содержимое в массиве навыков?
Комментарии:
1. вы пробовали django-rest-framework.org/api-guide/fields/#listfield ?
ListField
Ответ №1:
Основываясь на ошибке, это выглядит как запрос.данные представляют собой строку. Попробуйте json.loads перед передачей его сериализатору.
import json
class CreateUpdateEmployeeSkillsSubscription_APIView(views.APIView):
permission_classes = []
def post(self, request):
post_data = json.loads(request.data)
results = SkillsSubscription(post_data,many=True).data
return Response(xxx)