Хранение данных из CSV-файла в модель в Django? - PullRequest
0 голосов
/ 16 мая 2019

Я отправляю CSV-файл из формы с помощью метода POST и хочу сохранить его содержимое в модели forms.py

class SaveCsvForm(forms.Form):
     upload_file = forms.FileField(label="Uplaod CSV File", help_text="Uploa file in CSV format")

Views.py

def save_csv(request):
if request.method == 'POST':
    form = SaveCsvForm(request.POST, request.FILES)
    if form.is_valid():
        print("All ok I am check One")
        # instance = CsvStorage(file_field=request.FILES['file'])
        file = request.FILES['upload_file'].read()
        print(file)
        csv_to_db(file)
        ack = {
            'status': 'Success',
            'message': 'Data is successfuly submited into database'
        }
        return JsonResponse(ack)
    else:
        ack = {
            'status': 'Error',
            'message': 'Server Returned '+form.errors.as_json(),
        }
        return JsonResponse(ack)
else:
    form = SaveCsvForm()
    return render(request, 'upload_csv.html', {'form': form})

метод обработчика файладля хранения данных в модели

def csv_to_db(filename):
  with open(filename, 'r') as file:
    ''' reading csv file in dictionary format  '''
    reader = csv.DictReader(file)
    for row in reader:
        instance = CsvStorage(username=row['username'],
                              first_name=row['user'],
                              city=row['city'],
                              mobile=row['mobile']
                              )
        instance.save()
        if instance:
            return({'status': 'successfuly'})
        else:
            return({'status': 'error'})

Примечание:

1. Основная проблема при чтении файла

2. Я не хочу сохранять файл в моделяхfileField

1 Ответ

0 голосов
/ 27 июня 2019

В итоге я использовал класс FileSystemStorage в Django, как описано в docs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...