2016-08-05 10 views
1

選択メニューBには対応する値があり、選択メニューAにあるキーに依存する1つのdictで2つの選択メニューを作成するにはどうすればよいですか?選択メニューBの内容が選択メニューAの選択に依存する2つの選択メニューをどのように作成しますか?

私のDjango views.pyでは、Projectsのリストをキーとして、対応するTasksを辞書内の値として持つ辞書を作成しました。タスク1

プロジェクトA:タスク2

プロジェクトA:タスク3

プロジェクトB:タスク1

プロジェクトB:タスク2には、以下の

プロジェクトAのように見えます

プロジェクトC:タスク1

など

この情報を私のDjangoテンプレートに正常に渡すことができましたが、私は情報で何をする必要があるかについて私の頭を払うことはできません。

私は、キー、すなわちプロジェクトで情報を取得し、キーが選択されたときにキーの対応するすべてのタスクを表示するドロップダウンメニュー(A)を作成する必要があります。 2番目のドロップダウンメニュー(B)

私はどのような解決策もあります。私はjqueryの使用と何かを一緒にハッキングすることを考えていますが、どうやって始めればいいか分かりません。誰かがこれのようなもので経験を持っていますか?

答えて

2

これを行うにはdjango-autocomplete-lightを使用できます。これは、基本的には、select2のようなクライアントライブラリを使って自動補完を提供します。しかしそれはまたfilter results based on another fieldへの道を提供します。

あなたはおそらくもきれいな形でサーバーの確認を行う必要があります

class MyForm(forms.Form): 

    project = forms.ModelChoiceField(queryset=Project.objects.all()) 
    task = forms.Model.ChoicField(queryset=Task.objects.all()) 

    def clean(self): 
     project = self.cleaned_data['project'] 
     task = self.cleaned_data['task'] 
     if task.project_id != project.pk: 
      raise forms.ValidationError(
       "The selected task does not belong to the selected project.") 
+0

恐ろしい、どうもありがとうございました!このような編集をしていただきありがとうございます。 – jwerardi

+0

W O Wありがとう!正確に私が必要なもの、ありがとう! – jwerardi

関連する問題