使用perform_create()
时如何在kwargs['many'] = True
中获得对象?
我收到此错误消息:
许多= True的序列化器默认情况下不支持多次更新, 只有多个创建。对于更新尚不清楚如何处理 插入和删除。如果需要支持多个更新,请使用
ListSerializer
类并覆盖.update()
,因此您可以指定 行为完全一样。
class CreateUserApiView(CreateAPIView):
model = User
...
serializer_class = CreateRequesterSerializer
def get_serializer(self, *args, **kwargs):
""" if an array is passed, set serializer to many """
if isinstance(kwargs.get('data', {}), list):
kwargs['many'] = True
return super(CreateUserApiView, self).get_serializer(*args, **kwargs)
def perform_create(self, serializer):
obj = serializer.save(
...,
created_by=self.request.user)
obj.send_invitation()
答案 0 :(得分:0)
问题出在序列化程序中。基本上,您的序列化程序知道如何创建一个对象,但是您要他创建多个对象。在DRF3中,应该手动实现许多对象的创建。
因此,基本上,您需要重写序列化器:从ListSerializer
继承它(因为您期望输入许多对象)并实现update
方法。