Как получить выбранное значение из 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 и это сработало для меня.