Отправка списка в POST-заявке - Django Rest Framework
Я пытаюсь отправить список в POST заявке в Django Rest Framework. Моя задача выглядит следующим образом: Вложенные отношения, но мне нужен список.
Что мне нужно:
{
"id": 3435,
"titulo": "Livro x",
"editora": "Editora x",
"foto": "https://i.imgur.com/imagem.jpg",
"autores": ["Autor 1"]
}
Что я получаю:
{
"autores": [
{
"non_field_errors": [
"Invalid data. Expected a dictionary, but got str."
]
}
]
}
Мой файл serializers.py:
from rest_framework.serializers import ModelSerializer
from .models import Autor, Livro
class AutorSerializer(ModelSerializer):
class Meta:
model = Autor
fields = ('nome')
class LivroSerializer(ModelSerializer):
autores = AutorSerializer(many=True)
class Meta:
model = Livro
fields = ('id', 'titulo', 'editora', 'autores')
def create_autores(self, autores, livro):
for autor in autores:
obj = Autor.objects.create(**autor)
livro.autores.add(obj)
def create(self, validated_data, **kwargs):
autores = validated_data.pop('autores')
livro = Livro.objects.create(**validated_data)
self.create_autores(autores, livro)
return livro
Где я ошибаюсь?
в вашем файле views.py, для соответствующего представления добавьте следующий код для создания, если требуется, то и для обновления.
class AutorViewset(viewsets.ModelViewSet):
queryset=Autor.objects.all()
serializer_class=AutorSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data,
many=isinstance(request.data,list))
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
headers=headers)
Это позволит вам передавать список в качестве входных данных в модель Autor