Класс
FileUploadView принимает .csv файл и возвращает спаршенные данные в виде JSON (если я правильно понимаю смысл использования
renderer_classes = [JSONRenderer]
)
class FileUploadView(APIView):
parser_classes = ( MultiPartParser, FormParser)
renderer_classes = [JSONRenderer]
def put(self, request, format=None):
if 'file' not in request.data:
raise ParseError("Empty content")
f = request.data['file']
filename = f.name
if filename.endswith('.csv'):
file = default_storage.save(filename, f)
r = csv_file_parser(file)
status = 204
else:
status = 406
r = "File format error"
return Response(r, status=status)
Функция
csv_file_parser() которая вызывается в классе валидирует csv файл и формирует словарь. В итоге результат возвращаемый классом
FileUploadView
{
"1": {
"vendor_name": "Firstvendortestname",
"country": "BE",
"NDA date": "2019-12-24",
"Primary Contact Name": "Jack Jhonson",
"Primary Contact Email": "jack@gmail.com",
"Secondary Contact Name": "Jack2 Jhonson",
"Secondary Contact Email": "jack2@gmail.com",
"Modules": "Module1, Module2"
},
"2": {
"vendor_name": "Firstvendortestname",
"country": "BE",
"NDA date": "",
"Primary Contact Name": "Sandra Bullock",
"Primary Contact Email": "sandra@gmail.com",
"Secondary Contact Name": "Sandra Bullock",
"Secondary Contact Email": "sandra@gmail.com",
"Modules": "Module1, Module2"
}
}
Далее этот JSON передается на вход класса
CsvToDatabase
class CsvToDatabase(APIView):
def post(self, request, format=None):
serializer = VendorsSerializer(data=request.data)
print(request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
И при вызове этого кода получаю ошибку
{
"vendor_name": [
"This field is required."
],
"country": [
"This field is required."
]
}
Если я меняю формат входяего JSON на
{
"vendor_name": "Firstvendortestname",
"country": "BE",
"NDA date": "2019-12-24",
"Primary Contact Name": "Jack Jhonson",
"Primary Contact Email": "jack@gmail.com",
"Secondary Contact Name": "Jack2 Jhonson",
"Secondary Contact Email": "jack2@gmail.com",
"Modules": "Module1, Module2"
}
То все ок. Подскажите что изменить что бы мои данные валидировались?