[Django3.0]あいまい検索の検索フォーム実装

顧客一覧ページで、会社名の検索機能を設けたい。

template

<form action="/client/1" method="post">
				{% csrf_token %}
				<div class="form-group row">
					<div class="col-md-10">
						<input type="text" class="form-control" name="name" placeholder="検索する会社名を入力してください">
					</div>
					<div class="col-md-2">
						<button class="btn search-btn" type="submit">検索</button>
					</div>
				</div>
			</form>

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

– if(request.method==’POST’)でgetとpostを分岐させる
– 検索は *.objects.filter(column=value)と書く
– あいまい検索には(column__contains=value)と書く
– nullで検索された場合は、メッセージを表示させたくないので、最初の分岐で、and request.POST[‘name’]も追加する

views.py

def client(request, num=1):
	if(request.method=='POST' and request.POST['name']):
		name= request.POST['name']
		data = Clients.objects.filter(name__contains=name)
		page = Paginator(data, 3)
		params = {
			'data' : page.get_page(num),
			'query' : "会社名に「" + name + "」を含む検索結果"
		}
	else:
		data = Clients.objects.all()
		page = Paginator(data, 3)
		params = {
			'data' : page.get_page(num)
		}
	return render(request, 'sales/client.html', params)

うん、GoodJob! 意外と簡単にできました。
得意先一覧ができたので、続いて見積管理を作っていきます。
得意先が複数の見積を持つというhasManyのモデルをどう作るか考えなければなりません。