【发布时间】:2019-07-17 08:32:53
【问题描述】:
我有两个模型“书”和“作者”。我在“作者”模型中有作者详细信息。我正在使用 API 创建“书籍”。我想使用“Author_id”将“Author”与“Book”链接起来。
我试过下面的代码。
models.py:
class Author(models.Model):
name = models.CharField(max_length=64)
class Book(models.Model):
name = models.CharField(max_length=64)
author = models.ManyToManyField(Author,related_name='author')
views.py
class BookListView(APIView):
def post(self, request, format=None):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,
status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializer.py:
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ('name', )
class BookSerializer(serializers.ModelSerializer):
assessments = AuthorSerializer(many=True, required=False)
class Meta:
model = Book
fields = ('name', 'authors')
def create(self, validated_data):
print(validated_data)
authors = validated_data.pop('authors')
book = Book(**validated_data)
book.save()
return book
我在“作者”表中有以下作者。
id name
1 Alex
2 John
3 Bob
用于创建图书的示例 JSON 文件:
{
"name":"Product 002",
"authors":
[
{
"author_id":2
},
{
"author_id":1
}
]
}
保存图书时会出现以下错误。
{
"authors": [
{
"name": [
"This field is required."
]
},
{
"name": [
"This field is required."
]
}
]
}
Json 文件 2:
{
"name":"Product 002",
"authors":
[
{
"name": Alex,
"author_id":1
},
{
"name": "John"
"author_id":1
}
]
}
保存图书时会出现以下错误。
{
"authors": [
{
"name": [
"author with this name already exists."
]
},
{
"name": [
"author with this name already exists."
]
}
]
}
请帮我解决问题。提前致谢
【问题讨论】:
标签: django python-3.x django-rest-framework