libro
www.tuyano.com
初心者のためのDjango 2.0入門

さまざまな検索 (2/4)

作成:2018-01-14 09:00
更新:2018-01-14 09:00

■数値の比較演算

数値を使った検索もよく使われる機能の一つでしょう。数値の場合、値の比較を行って検索する処理が非常に多いでしょう。

・値よりも大きい
項目名__gt=値

・値と等しいか大きい
項目名__gte=値

・値よりも小さい
項目名__lt=値

・値と等しいか小さい
項目名__lte=値

これらは、<>=といった記号で2つの値を比べる比較演算で絞り込みを行うものです。値を比較して、指定の値より大きいもの、小さいものなどを取り出すのですね。

では、これもサンプルを挙げておきましょう。テンプレートはindex.htmlをそのまま使います。
views.py
index関数を下のリスト欄のように修正しましょう。そして、hello/urls.pyを開き、urlpatternsを以下のように修正して下さい。
urlpatterns = [
    path('<int:num>/', views.index, name='index'),
    path('', views.index, name='index'),
]
これは、普通のテキスト検索に、ageによる絞り込みを追加した例です。/helloとアクセスすると全レコードが表示されますが、/hello/年齢 というようにアクセスすると、その年齢以下のレコードだけを表示します。例えば、/hello/30 とすれば、ageの値が30以下のものだけを表示します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

def index(request,num=1000):
    if request.method == 'POST':
        name_str = request.POST['name']
        data = Person.objects.all().filter(name=name_str)
    else:
        data = Person.objects.all().filter(age__lte=num)
        name_str = ''
    context = {
        'current_name': name_str,
        'msg': 'Personのリスト',
        'data': data,
    }
    return render(request, 'hello/index.html', context)

※関連コンテンツ

「初心者のためのDjango 2.0入門」に戻る