[Django3.0]datepickerの範囲指定で検索して表示する

見積一覧ページで、「日付」「会社名」「件名」でページ内検索できるようにする。
なお、日付は、範囲指定か、以上以下で検索できるようにする

画面

### template

<form action="/estimate/1" method="post">
				{% csrf_token %}
				<div class="form-group row">
						<label for="datepicker_s" class="col-md-1 col-form-label">日付</label>
						<div class="col-md-2">
							<input name="datepicker_s" type="text" class="form-control align-bottom" id="start" placeholder="開始">
						</div>
						<div class="col-md-2">
							<input name="datepicker_e" type="text" class="form-control" id="end" placeholder="終了">
						</div>
						<label for="client_name" class="col-md-1 col-form-label">会社名</label>
						<div class="col-md-6">
							<input name="client_name" type="text" class="form-control" id="tel" placeholder="得意先会社名">
						</div>
				</div>

				<div class="form-group row">
						<label for="title" class="col-md-1 col-form-label">見積件名</label>
						<div class="col-md-11">
							<input type="text" class="form-control align-bottom" name="title" id="title" placeholder="見積件名">
						</div>
				</div>

				<div class="">
						<button class="btn search-btn text-center" type="submit">検索</button>
				</div>
			</form>

			<span>{{ query }}</span>

JS

$(function(){
			var format = 'yy-mm-dd';

			var start = $("[name=datepicker_s]").datepicker({
				dateFormat: 'yy-mm-dd'
			}).on("change", function(){
				end.datepicker("option", "minDate", getDate(this));
			});

			var end = $("[name=datepicker_e]").datepicker({
				dateFormat: 'yy-mm-dd'
			}).on("change", function(){
				start.datepicker("option", "maxDate", getDate(this));
			});

			function getDate(element){
				var date;
				try {
					date = $.datepicker.parseDate(format, element.value);
				} catch(error){
					date = null;
				}
				return date;
			}
		});

html側で「終了」が「開始」より前で指定できないようバリデーションがかかります。

### views.py
– 1.「開始」「終了」の入力があった場合、2.「開始」のみ入力があった場合、3.「終了」のみ入力があった場合、4.「開始」「終了」の入力がないPOSTの場合、5.「GET」の場合 でそれぞれレコードを取得します。
– ForeginKeyのクエリを検索する場合は、${model}__${column}で検索する。ここでは、顧客の会社名一部一致の検索のため、client__name__containsとしている。
– 検索内容を検索結果ページに表示させる

def estimate(request, num=1):
	if(request.method=='POST' and request.POST['datepicker_s'] and request.POST['datepicker_e']):
		data = Estimates.objects.filter(estimate_date__range=(request.POST['datepicker_s'], request.POST['datepicker_e']), client__name__contains=request.POST['client_name'], title__contains=request.POST['title']).order_by('-id')
		query = "「" + request.POST['datepicker_s'] + "〜" + request.POST['datepicker_e'] + "」"
		query += "「" + request.POST['client_name'] + "」" if request.POST['client_name'] else ""
		query += "「" + request.POST['title'] + "」" if request.POST['title'] else ""
		query += "の検索結果"
	elif(request.method=='POST' and request.POST['datepicker_s']):
		data = Estimates.objects.filter(estimate_date__gte=request.POST['datepicker_s'], client__name__contains=request.POST['client_name'], title__contains=request.POST['title']).order_by('-id')
		query = "「" + request.POST['datepicker_s'] + "〜」"
		query += "「" + request.POST['client_name'] + "」" if request.POST['client_name'] else ""
		query += "「" + request.POST['title'] + "」" if request.POST['title'] else ""
		query += "の検索結果"
	elif(request.method=='POST' and request.POST['datepicker_e']):
		data = Estimates.objects.filter(estimate_date__lte=request.POST['datepicker_e'], client__name__contains=request.POST['client_name'], title__contains=request.POST['title']).order_by('-id')	
		query = "「〜" + request.POST['datepicker_e'] + "」"
		query += "「" + request.POST['client_name'] + "」" if request.POST['client_name'] else ""
		query += "「" + request.POST['title'] + "」" if request.POST['title'] else ""
		query += "の検索結果"
	elif(request.method=='POST'):
		data = Estimates.objects.filter(client__name__contains=request.POST['client_name'], title__contains=request.POST['title']).order_by('-id')
		query += "「" + request.POST['client_name'] + "」" if request.POST['client_name'] else ""
		query += "「" + request.POST['title'] + "」" if request.POST['title'] else ""
	else:
		data = Estimates.objects.all().order_by('-id')
		query = ""
	page = Paginator(data, 3)
	count = data.count()
	total = data.aggregate(Sum('total'))
	params = {
		'data' : page.get_page(num),
		'count' : count,
		'total' : total,
		'query' : query,
	}
	return render(request, 'sales/estimate.html', params)

これで1ページ目は上手くいってるんだけど、2ページ目はpostではなくgetになってしまうから、上手くいかんな。どうしたらいいんだろうか。