【发布时间】:2021-10-12 13:34:51
【问题描述】:
我尝试在 Django Rest Framework 的 POST 申请中发送列表。我的目标是这样的:Nested Relationship,但我想要一个列表。
我需要什么:
{
"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
我哪里出错了?
【问题讨论】:
-
我试过了。不要工作。我有一个多对多的关系。但是,谢谢。
-
如果你把这个
autores = AutorSerializer(many=True)改成这个autores = AutorSerializer(many=True, read_only=True)会发生什么? -
@Daniel,与
autores = AutorSerializer(many=True, read_only=True),我收到Key error 'autores'
标签: django api django-rest-framework