Как получить выбранное значение из checkbox в файле views.py и преобразовать в excel?

index.html

  <form method="GET">
     <div class="form-row">
        <div class="custom-control custom-checkbox mb-10 popup-sec-chk">
            <input class="custom-control-input form-control inputfld" type="checkbox" id="date_inquiry" name="excelfields[]" value="dateofInquiry">
            <label class="custom-control-label" for="date_inquiry">Date of Inquiry</label>
        </div>
            
        <div class="custom-control custom-checkbox mb-10 popup-sec-chk">
            <input class="custom-control-input inputfld" type="checkbox" id="callers_name" name="excelfields[]" value="Callers name">
            <label class="custom-control-label" for="callers_name">Caller's Info</label>
        </div>
    </div>
    
    <div class="modal-footer">
        <a type="submit" href="{% url 'excelExport' %}" class="btn btn-primary" >Select</a>
    </div>
  </form>

views.py

def excelExport(request):
    try:
        if request.method == 'GET':
            checkedField = request.GET.getlist('excelfields[]')
            print("Checked list data ====== ", checkedField)
            return HttpResponseRedirect('home')
    except Exception as e:
        print("Exception =", e)
        return render(request, 'home.html')

Вывод на печать: -

Checked list data ======  []

Я работаю над проектом Django, в котором я хочу экспортировать в excel выбранные данные из чекбокса. Сейчас я могу сделать экспорт в excel, но получаю все данные, вместо этого мне нужны выбранные данные, которые я буду выбирать из чекбокса.

Вам нужно выполнить итерацию над результатом getlist. Я тестировал с POST-запросами, и это работает нормально, должно работать и для GET-запросов.

Тестируемый код представления:

def test_view(request):
    for val in request.POST.getlist("excelfields[]"):
        print(val)

HTML, который был протестирован с помощью:

      <form action="{% url 'test_view' %}" method="POST">
        {% csrf_token %}
        <div>
          <span>Checkbox 1</span>
          <input type="checkbox" name="excelfields[]" value="one"/>
        </div>
        <div>
          <span>Checkbox 2</span>
          <input type="checkbox" name="excelfields[]" value="two"/>
        </div>
        <button type="submit">Select</a>
      </form>
  <form method="GET">
     <div class="form-row">
        <div class="custom-control custom-checkbox mb-10 popup-sec-chk">
            <input class="custom-control-input form-control inputfld" type="checkbox" id="date_inquiry" name="excelfields[]" value="dateofInquiry">
            <label class="custom-control-label" for="date_inquiry">Date of Inquiry</label>
        </div>
            
        <div class="custom-control custom-checkbox mb-10 popup-sec-chk">
            <input class="custom-control-input inputfld" type="checkbox" id="callers_name" name="excelfields[]" value="Callers name">
            <label class="custom-control-label" for="callers_name">Caller's Info</label>
        </div>
    </div>
    
    <div class="modal-footer">
        **<button type="submit" href="#" class="btn btn-primary" >Select</button>**
    </div>
  </form>

Мне просто нужно изменить тег с a(anchor tag) на button и это сработало для меня.

Вернуться на верх