【发布时间】:2017-10-18 15:28:39
【问题描述】:
我正在使用 list Serializer by many = True。 create 方法运行良好,但我无法理解 django rest 框架文档中列表序列化程序的自定义更新方法的流程。使用列表序列化程序的基础很清楚,但是当我在代码中使用它时,流程是无法理解的。我无法理解第四行中 book.items 的含义。什么是书?在文档中,它还要求向实例序列化程序添加显式 id 字段。默认隐式生成的 id 字段被标记为 read_only。希望了解文档在说什么以及如何实现它。文档中的上下文如下所示。
class BookListSerializer(serializers.ListSerializer):
def update(self, instance, validated_data):
# Maps for id->instance and id->data item.
book_mapping = {book.id: book for book in instance}
data_mapping = {item['id']: item for item in validated_data}
# Perform creations and updates.
ret = []
for book_id, data in data_mapping.items():
book = book_mapping.get(book_id, None)
if book is None:
ret.append(self.child.create(data))
else:
ret.append(self.child.update(book, data))
# Perform deletions.
for book_id, book in book_mapping.items():
if book_id not in data_mapping:a
book.delete()
return ret
【问题讨论】:
标签: python django django-rest-framework