項目__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)
<< 前へ |