2016-05-25 16 views
0

私は単純な2ページのWebサイトを作っています。ユーザーは、トップページにドロップダウンボックスやHTML選択フォーム(メイク、モデル、トリム)を使用して、データベースに格納されます。検索ボタンを押すと、ユーザーはその車両に関する情報を提供するページに移動します。 Djangoのデータベースのデータにこれらのドロップダウンボックスをどのようにリンクさせるかについては、私は非常に混乱しています。Djangoのデータベースから選択フォームオプションをプル

私が持っている車のモデルは、私のcardetailsアプリのmodels.pyに存在し、これまでのところ、次のようになりますについてグーグルで

class Car(models.Model): 

    make = models.CharField(max_length=50) 
    model = models.CharField(max_length=50) 
    trim = models.CharField(max_length=50) 

    # other info here. 

    # Return the actual name of the car instead of "model-object" 
    def __str__(self): 
     return self.make + " " + self.model + " " + self.trim 

は、フォーム内に存在するのModelFormを、セットアップのこのように私を導きましたホームページアプリのの.py:私が持っている3つのドロップダウンボックスの

from django import forms 
from cardetails.models import Car 

class CarForm(ModelForm): 
    allCars = forms.ModelChoiceField(queryset=Car.objects.all()) 

、「作る」ための1がホームページのHTMLテンプレートにそうようになっています

   <span style="display:inline-block"> 
       <select class="form-control" id="make"> 
        {% for car in allCars %} 
        <option>{{ car.make }}</option> 
        {% endfor %} 
       </select> 
       <label for="make" style="display:block">Make</label> 
      </span> 

ビューには、次のとおりです。

from django.shortcuts import render 

    def index(request): 
    return render(request, 'search/index.html') 

しかし、何も「作る」ドロップダウンボックスに表示されません。私がしたいのは、ドロップダウンボックスを使ってデータベース内のすべての車のメーカー、モデル、およびトリムをすべて選択できるようにすることです。

+0

allCarsをコンソール化していますか?クエリが正しくフェッチされていますか? –

+0

フォームはあなたが表示したテンプレートコードとどのように関連していますか?あなたの意見を示すことができます。 – Sayse

答えて

1

あなたが選択した車のPKまたはIDを取得し、あなたのユーザーは次のようになりたい次のビューにそれを渡すことができます:

あなたはtemplate.htmlで

<form method='post' action=''> 
    <select class="form-control" id="make" name='selected_car'> 
     {% for car in allCars %} 
      <option value='{{car.id}}'>{{ car.make }}</option> 
     {% endfor %} 
    </select> 
</form> 
あなたはtemplate.html ため

ビューをview.pyで

これはあなたを助けるcar_detail.html

def carDetails(request,car_id): 
    selected_car = Car.objects.get(pk=car_id) 
    context = {} 
    template = 'car_detail.html' 
    render(request, template, context) 

ホープ

def allCars(request): 
    .....your code here to get all car.... 
    if request.POST: 
     car_id = request.POST['selected_car'] 
     redirect('name-url',car_id=car_id) 


ビュー。

+0

これは意味があり、間違いなく助けになるでしょう、ありがとうございます。 – sidp

関連する問題