Raf*_*fAl 3 python django django-rest-framework
我正在尝试发送一个额外的数组以及POST创建组的请求。
POST /groups/\n{\n "name": \xe2\x80\x9cNew Group\xe2\x80\x9c,\n "users_to_invite": [ 1, 2, 6 ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我正在使用Django Rest Framework\'sListCreateAPIView来处理请求:
class GroupListView(ListCreateAPIView):\n queryset = Group.objects.all()\n\n def get_serializer(self, *args, **kwargs):\n kwargs[\'context\'] = self.get_serializer_context()\n\n # Use a dedicated serializer to inspect the field with users to invite\n if self.request.method == \'POST\':\n return GroupCreateSerializer(*args, **kwargs)\n return GroupSerializer(*args, **kwargs)\nRun Code Online (Sandbox Code Playgroud)\n\n我想获取users_to_invite序列化器中数组的内容以创建邀请对象。但是,我无法这样做,因为当我在序列化器中访问它时,不知何故该数组不存在。
class GroupCreateSerializer(ModelSerializer):\n\n def create(self, validated_data):\n # Get user ids to invite\n # !! It fails here !!\n invitations_data = validated_data.pop(\'users_to_invite\')\n\n # TODO: Iterate over ids and create invitations\n\n # Create a group\n group = Group.objects.create(**validated_data)\n return group\n\n class Meta:\n model = Group\n fields = (\'id\', \'name\', )\nRun Code Online (Sandbox Code Playgroud)\n\n数组不存在,所以我很自然地收到错误:
\n\nFile "...my_api/serializers.py", line 303, in create\n invitations_data = validated_data.pop(\'users_to_invite\')\nKeyError: \'users_to_invite\'\nRun Code Online (Sandbox Code Playgroud)\n\n我怎样才能让数组出现在那里?修改模型听起来不是一个好主意,因为我不想存储数组中的内容。
\n小智 6
没有额外的数据,validated_data您可以尝试使用self.context['request']详细信息:include-extra-context,默认情况下它添加在视图的get_serializer方法中
对于你的情况:
def create(self, validated_data):
# Get user ids to invite
# !! It fails here !!
request = self.context['request']
invitations_data = request.data.get('users_to_invite')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2398 次 |
| 最近记录: |