pko*_*out 5 django django-rest-framework
我在请求正文中发送了一个带有以下内容的API发布请求(转换为JSON字符串),以便序列化为BookCollection文档,并将图书保存为嵌入文档列表:
{
'author': '<author_id>',
'books': [
{
'title': 'Grapes of Wrath',
'note': 'More to be ordered.',
'created': '2016-03-11T17:59:01.054Z'
}
]
}
Run Code Online (Sandbox Code Playgroud)
views.py:
def post(self, request, *args, **kwargs):
serializer = BookCollectionSerializer(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)
Run Code Online (Sandbox Code Playgroud)
models.py:
class Book(EmbeddedDocument):
title = StringField(required=True, max_length=50)
note = StringField(required=False, max_length=2000)
created = DateTimeField(required=True,
default=datetime.datetime.now())
class BookCollection(Document):
author = ReferenceField(Author, required=True)
books = EmbeddedDocumentListField(Book, required=False)
Run Code Online (Sandbox Code Playgroud)
serializers.py
class BookSerializer(EmbeddedDocumentSerializer):
class Meta:
model = Book
depth = 2
class BookCollectionSerializer(DocumentSerializer):
author = ReferenceField(Author)
books = BookSerializer(Book, many=True)
class Meta:
model = BookCollection
depth = 2
def create(self, validated_data):
books = validated_data.pop('books')
book_collection = BookCollection.objects.create(**validated_data)
book_collection.books = []
for book in books:
book_collection.books.append(book)
book_collection.save()
return book_collection
Run Code Online (Sandbox Code Playgroud)
当我运行post请求时,BookCollection对象确实被持久化; 但是,BooksCollection中不会保留书籍列表(嵌入文档列表).它只是设置为空白列表[].我在这做错了什么?我也尝试从create()方法中删除逻辑,但这没有帮助.谢谢!
| 归档时间: |
|
| 查看次数: |
1177 次 |
| 最近记录: |