2017-06-01 15 views
0

Rawメソッドを使用してデータをフィルタリングしています。Select2プラグインを使用してフィールド内で複数の値を選択できるようになりました。私は戻って結果がそれらを表示するために取得するときDjangoレンダリング:Select2 Jqueryプラグインで選択項目をインスタンス化する方法

context = { 
    'form': MyForm(request.POST), 
    'results': results, 
} 
return render(request, self.template_name, context) 

フィールドが選択したユーザーを表示するsuppossedですが、フォームがレンダリングするとき、私は最初の値のみを選択します:フィルタリングものは、その後、私はこのような状況を返します(POSTから取得した)リストの私は別のものを設定しなければなりませんか?または私は何か間違っているのですか?

UPDATE: Djangoのフォームからの入力ウィジェットをレンダリング:

また
equipo = ChoiceField(
     widget=Select(
      attrs={'class': 'form-control input-sm', 'multiple': 'multiple'} 
     ) 
    ) 

、私はちょうどrawメソッドを使用してフィルタを適用する値を取得し、rawquery結果をバック与えている、保存していませんよ。

ビュー:

class MedicionView(View): 

    def __init__(self): 
     self.template_name = "medicion/grid.html" 

    def get(self, request): 

     form = MedicionFiltersForm() 
     odometros = Odometro.objects.all() 
     equipos = Equipo.objects.all() 
     results = Odometro.objects.raw(''' 
      select 
      .... 

       ''')[:100] 

     contexto = { 
      'form': form, 
      'results': results, 
     } 

     return render(request, self.template_name, contexto) 

    def post(self, request): 
     # Retrieve data 
     form = MedicionFiltersForm(request.POST) 
     equipos = request.POST.getlist('equipo') 
     odometros = request.POST.getlist('odometro') 
     tipo = request.POST.get('tipo') 

     # business stuff 

     results = Odometro.objects.raw(''' 
      select 
      ... 

       ''', [odometros, tipos, equipos]) 

     # More business stuff 

     # return request.POST in form 
     contexto = { 
      'form': form, 
      'results': results, 
     } 
     return render(request, self.template_name, contexto) 

M2Mでも私はちょうどraw方法でSQL WHERE IN句を使用するために複数の値を使用して、私のモデルには存在しません。

+0

関連するHTMLを追加し、Select2の設定方法と設定方法を質問に追加してください。 – Soviut

+0

あなたは単に 'multiple =" multiple "'を使用していない理由はありますか? – morinx

+0

こちらもご覧ください。私はあなたが 'm2m save'ではないと思っています – morinx

答えて

0

私はとても素敵ではない方法でこの問題を解決するが、それは動作します:

私は整数のリストにPOSTメソッドでコンポーネントによって取得した値を通過した後、JSONに

lista_equipos = request.POST.getlist('equipo') 
equipos_lista = [int(item) for item in lista_equipos] 
equipos_json = json.dumps(equipos_lista) 
それをダンプ

私は、コンテキスト内でJSONを返す:私はこのJSONを取得し、SELECT2コンポーネントに値を設定したテンプレートで

context = { 
    # some extra variables 
    'equipos_lista': equipos_json 
} 

。トリガー方法についてお見逃しなく!

<script> 
    var array_equipos = {{ equipos_lista }}; 
    $('#id_equipo').val(array_equipos); 
    $('#id_equipo').trigger('change'); 

</script> 
関連する問題