2017-10-13 14 views
0

私はちょうどpython/djangoの学習を始めました。私は小さなプロジェクトに取り組んでいます。私はモデルとhtmlフォームビルドを持っています。データベースを照会し、ユーザーが入力した目的地の都市に一致するドライバーのすべての名前をフィルターに掛けるにはどうすればよいですか。Djangoユーザ入力に基づいてデータベースを照会します

マイモデル

class Drivers(models.Model): 
    first_name = models.CharField(max_length=30, null=True, blank=False) 
    last_name = models.CharField(max_length=30, null=True, blank=False) 
    destination_one = models.CharField(max_length=50, null=True, blank=False) 

私のHTMLフォーム

<form id="searchform" method="get" action="" accept-charset="utf-8"> 
    Search destination: 
    <input id="searchbox" name="search_res" type="text" placeholder="Search"> 
    <input type="submit" value="OK"> 
</form> 

    {% for dr in results %} 

     {{dr.first_name}} 
     {{dr.last_name}} 
     {{dr.destination_one}} 
     <br> 

    {% endfor %} 

    <br> 

マイビュー

def newpage(request): 
    query = request.GET.get('search_res') 
    if request.method == 'GET': 
     results = Drivers.objects.filter(destination_one=query) 
     context = RequestContext(request) 
    return render_to_response(request,'busapp/newpage.html',{'results': results}) 

モデルとHTMLは大丈夫です。 views.pyで簡単なdefを作成するのに問題があります。

+2

正確には動作しません。 – schwobaseggl

+0

querry = Noneの場合、ユーザーが 'search_res'パラメータを指定しないでそのページを開いたときに問題が発生します –

答えて

0
from django.shortcuts import render 
def newpage(request): 
    query = request.GET.get('search_res', None) 
    context = {} 

    if query and request.method == 'GET': 
     results = Drivers.objects.filter(destination_one=query) 
     context.update({'results': results}) 
return render(request,'busapp/newpage.html',context) 
関連する問題