Hi philgyford,
Thank you so much for your help. I made the changes you prescribed and still not working. It still loses the query on the next page. I think I’m close. I know I must have something wrong.
views.py (partial)
def turnover_index(request, *args, **kwargs):
my_datetime = datetime.now()
new_datetime = my_datetime - timedelta(hours=24) # Subtract 24 hours
if request.GET.get("sel_query", None) is not None:
template = 'turnover_app/turnover-list.html'
inputtxt = request.GET.get('sel_query')
if inputtxt == '1': # default completed = False last 24 hrs closed or open
querystring = request.GET.copy()
page = querystring.get('page')
tologs = ToLog.objects.all().filter(Q(completed=False) | Q(date_time__gte=new_datetime)).order_by(_ORDBY) # works good
elif inputtxt == '2': # All Open
querystring = request.GET.copy()
page = querystring.get('page')
tologs = ToLog.objects.all().filter(Q(completed=False)).order_by(_ORDBY)
elif inputtxt == '3': # all closed
querystring = request.GET.copy()
page = querystring.get('page')
tologs = ToLog.objects.all().filter(Q(completed=True)).order_by(_ORDBY)
elif inputtxt == '4': # all records
querystring = request.GET.copy()
page = querystring.get('page')
tologs = ToLog.objects.all().filter().order_by(_ORDBY)
else: # default initial page load
querystring = request.GET.copy()
page = querystring.get('page')
template = 'turnover_app/index.html'
tologs = ToLog.objects.all().filter(Q(completed=False) | Q(date_time__gte=new_datetime)).order_by(_ORDBY)
tologs_cnt = tologs.count()
paginator = Paginator(tologs, _ITEMS_PER_PAGE)
page_number = request.GET.get('page', page)
page_obj = paginator.get_page(page_number)
if type(page_number) == str:
conv_2_num = int(page_number)
if conv_2_num == 1:
rec_to_get = 0
else:
rec_to_get = (conv_2_num * _ITEMS_PER_PAGE)
rec_to_get = rec_to_get - _ITEMS_PER_PAGE
else: # page_number = <class 'NoneType'>
conv_2_num = 1
rec_to_get = (conv_2_num * _ITEMS_PER_PAGE)
rec_to_get = rec_to_get - _ITEMS_PER_PAGE
if tologs_cnt == 0:
_TOLOG_SRCH_ID_PAGE=1
else:
_TOLOG_SRCH_ID_PAGE=(tologs[rec_to_get].id)
TologPkRecID = _TOLOG_SRCH_ID_PAGE
return render(request, template,{'TologPkRecID': TologPkRecID, 'querystring': querystring.urlencode(), 'page_obj': page_obj, 'count': tologs.count()})
index.html (partial)
<div>
<select class="form-select form-select-sm w-50 mb-3" id ="sel_query" name="sel_query" aria-label=".form-select-sm example"
hx-get="{% url 'turnover_app:turnover_index' %}" hx-headers='{"X-CSRFToken":"{{ csrf_token }}"}' hx-target="#turnList">
<option selected>Select Queries</option>
<option value="1">Default</option>
<option value="2">All Open</option>
<option value="3">All Closed</option>
<option value="4">All Records</option>
</select>
</div>
pagination.html (complete)
<div class="btn-group" role="group" aria-label="Item pagination">
{% if page_obj.has_previous %}
<a href="{% querystring page=page_obj.previous_page_number %}" class="btn btn-outline-primary">«</a>
{% endif %}
{% for page_number in page_obj.paginator.page_range %}
{% if page_obj.number == page_number %}
<button class="btn btn-outline-primary active">
<span>{{ page_number }} <span class="sr-only">(current)</span></span>
</button>
{% else %}
<a href="?page={{ page_number }}" class="btn btn-outline-primary">
{{ page_number }}
</a>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<a href="{% querystring page=page_obj.next_page_number %}" class="btn btn-outline-primary">»</a>
{% endif %}
</div>
<div>Total record count: {{ count }}</div>