2017-10-04 8 views
0

Djangoで2つのリストを作成したいと思います。Django対話型データベースクエリとユーザ選択に基づくリスト

最初のものは、dbクエリ(外部クエリ)から返されたすべての結果をリストします。選択が完了するまで、2番目のペインは空白です。これは単一選択ドロップダウン

ユーザーが最初のドロップダウンで項目を選択すると、その選択のすべての結果のリストが表示されます(別のdbクエリーに基づいて)。この選択はマルチセレクトです。どの要素がDjangoで複数選択できるのかわからない。

例。最初のリストで都市を選択し、2番目のリストにあるすべてのセンターのリストを取得し、2番目のリストに複数のセンターを選択して提出する

質問されている情報は外部データベースからのものですが、APIを使用することもできますクエリはどのように要素を作成し、選択に基づいてそれらを更新するかを示します。私もdjango-bootstrap3を使用しています

答えて

1

Ajaxを使用してデータベースを照会できます。

$.ajax({ 
     type: "POST", 
     url: "/load_pane/" + $id, //specify your URL which you will create in Django with some ID selected by user from dropdown 
     // Specify your CSRF token here, if you do a GET request then it's not needed 
     data: $("#form").serialize() // You can send additional data if you want, 
     success: function (data) { 
      $("#second-pane").html . . . . // Populate second pane with JSON data. (HTML container with multi-select) 

      } 
     }); 

とDjangoで、あなたがRESTfulなAPIを使用することができ、または単純なアプローチ 登録 '/ loadpane' の(ルートであなたのURLとそれがviews.pyでこの関数を呼び出してください)

def populate_pane(request, id): 
     if request.POST: 
      data = Model.objects(...) #Get whatever data you want using model 
      return HttpResponse(json.dumps(data)) #This JSON will be processed by Ajax on front-end in the Multi-Select HTML component. 

Ajaxの成功機能でjQueryを使用してフロントエンドでDjangoから取得するJSONデータで埋め込むことができる複数選択のHTMLコンポーネントの場合はhttps://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multipleに従ってください。