我正在尝试发送一个额外的数组POST
创建组的请求。
POST /groups/
{
"name": “New Group“,
"users_to_invite": [ 1, 2, 6 ]
}
我在用着Django Rest Framework
's ListCreateAPIView
处理请求:
class GroupListView(ListCreateAPIView):
queryset = Group.objects.all()
def get_serializer(self, *args, **kwargs):
kwargs['context'] = self.get_serializer_context()
# Use a dedicated serializer to inspect the field with users to invite
if self.request.method == 'POST':
return GroupCreateSerializer(*args, **kwargs)
return GroupSerializer(*args, **kwargs)
我想了解 的内容users_to_invite
序列化器中的数组来创建邀请对象。但是,我无法这样做,因为当我在序列化器中访问它时,该数组不存在。
class GroupCreateSerializer(ModelSerializer):
def create(self, validated_data):
# Get user ids to invite
# !! It fails here !!
invitations_data = validated_data.pop('users_to_invite')
# TODO: Iterate over ids and create invitations
# Create a group
group = Group.objects.create(**validated_data)
return group
class Meta:
model = Group
fields = ('id', 'name', )
数组不存在,所以我很自然地收到错误:
File "...my_api/serializers.py", line 303, in create
invitations_data = validated_data.pop('users_to_invite')
KeyError: 'users_to_invite'
我怎样才能让数组出现在那里?修改模型听起来不是一个好主意,因为我不想存储数组中的内容。