【发布时间】:2019-04-25 18:17:20
【问题描述】:
如何使用serializers.ListField() 序列化多个InMemoryUploadedFile??
代码 sn-p
#views.py
@api_view(['POST', 'GET'])
def create_post(request):
if request.method == 'POST':
altered_request_data = request.data.copy()
in_memory_upload_files_list = [value for value in request.FILES.values()]
altered_request_data['files'] = in_memory_upload_files_list
serializer = PostSerializer(data=altered_request_data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(data=serializer.data, status=201)
else:
qs = Post.objects.all()
serializer = PostSerializer(qs, many=True)
return Response(serializer.data)
#serilizers.py
class PostSerializer(serializers.ModelSerializer):
files = serializers.ListField(child=serializers.FileField(), write_only=True)
class Meta:
fields = '__all__'
model = Post
当前反应
{
"files": {
"0": [
"The submitted data was not a file. Check the encoding type on the form."
]
}
}
【问题讨论】:
-
我认为您不需要它,因为您调用
save只需处理保存中的文件就可以了。 -
给定的响应是验证错误,它在调用
save()方法之前引发
标签: python django django-rest-framework django-serializer django-uploads