2 кнопки для загрузки одного файла django для загрузки файла - PullRequest
0 голосов
/ 15 января 2020

Я работаю над приложением CRUD для изменения базы данных MySQL с помощью Django, и я пытаюсь добавить 2 варианта загрузки CSV, которая добавляет данные в таблицу, и другую, которая заменяет данные с загруженным CSV (удалить и добавить) для этого я попытался сделать 2 кнопки для одной формы, но это не работает для меня.

views.py:

    basecaseform = BaseCaseForm(request.POST)
    BaseCase_columns = [key for key, value in BaseCase.__dict__.items()]
    BaseCase_columns = BaseCase_columns[5:-1]
    basecase = BaseCase.objects.all()
    if request.method == 'GET':
        return render(request,'basecaselist.html',{'basecaseform':basecaseform,'basecase':basecase,'BaseCase_columns':BaseCase_columns})
    if 'replace' in request.GET:
        BaseCase.objects.all().delete()
    else:
        pass
    csv_file=request.FILES['file']
    if not csv_file.name.endswith('.csv'):
        messages.error(request,'this is not a csv file')
    data_set=csv_file.read().decode('UTF-8')
    io_string=io.StringIO(data_set)
    next(io_string)
    for column in csv.reader(io_string,delimiter=',',quoting=csv.QUOTE_NONE):
        _, created=BaseCase.objects.update_or_create(
            base_case_name= column[0],
            version= column[1],
            default= column[2],
        )
    if basecaseform.is_valid():
        basecaseform.save()
    else:
        basecaseform = BaseCaseForm()
    return render(request,'basecaselist.html',{'basecaseform':basecaseform,'basecase':basecase,'BaseCase_columns':BaseCase_columns})

html файл:


<form method="post" enctype="multipart/form-data">
            {% csrf_token %}
            <label for="file-upload" class="btn btn-primary">
                 Add
            </label>
            <input id="file-upload" type="file" name="add" onchange="this.form.submit()"/>
             <label for="file-upload" class="btn btn-primary">
                 Replace
            </label>
            <input id="file-upload" type="file" name="replace" onchange="this.form.submit()"/>
        </form>

это решение выдает ошибку:

Exception Type: MultiValueDictKeyError at /basecase/
Exception Value: 'file'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...