Сериализатор
VendorsSerializer
в классе
CsvToDatabase
заточен на приём данных для одного объекта, а вы передаёте в него список объектов. Варианта два: или передавать с фронта на бэк каждый объект отдельным запросом, или делать
CsvToDatabase
способным обработать список объектов.
В первом варианте у вас будет отсутствовать транзакционность. То есть первый объект может быть сохранён, а второй при обрыве связи или кривых данных сохранён не будет.
Во втором варианте можно сначала проверить все объекты, и лишь в случае успеха сохранить их в БД. Начало может быть примерно таким:
class CsvToDatabase(APIView):
def post(self, request, format=None):
for key, data_item in request.data.items():
serializer = VendorsSerializer(data=data_item)
...