項目__in=[値1, 値2, ……]これは、値に用意したリストを使って項目の値を調べるものです。例えば、name__in=['A', 'B', 'C'] といった具合に記述すれば、nameの値がAかBかCのものだけを検索できます。
name_str = request.POST['name']これで、name_arr にはsplitでテキストを分割したリストが代入されます。このリストを使って検索を行なっていたのですね。
name_arr = name_str.split(',')
data = Person.objects.all().filter(name__in=name_arr)この検索を行っている部分を見ると、filter内にname_in とname_arrを比較する文が用意されていることがわかります。
filter(name__in=name_arr)これで、name_arrのリストに含まれているテキストを使って、name項目から値を探し出すようになります。「以下に検索対象となるリストを用意するか」を考えないといけませんが、それさえクリアできれば割と簡単に使えますよ!
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
def index(request):
if request.method == 'POST':
name_str = request.POST['name']
name_arr = name_str.split(',')
data = Person.objects.all().filter(name__in=name_arr)
else:
data = Person.objects.all()
name_str = ''
context = {
'current_name': name_str,
'msg': 'Personのリスト',
'data': data,
}
return render(request, 'hello/index.html', context)
| << 前へ |