2016-12-07 18 views
0

私はDjangoを初めて使いました。私がしようとしているのは、私がDjangoフォームのchoicefieldに表示するタプルに変換したJSON応答値を表示することです。有効な選択肢を選択することは利用可能な選択肢の1つではありません

これは私がタプルに

usernamelist = [] 
useremaillist = [] 
for userobject in userobjects: 
    username = userobject['somevalue'] 
    email = userobject['somevalue'] 
    useremaillist.append(email) 
    usernamelist.append(username) 
user_tuple = zip(usernamelist,useremaillist) 

を作成しています。これは、私がリスト

ドロップダウンにすべてのこれらの名前を入れしようとしている私のフォーム私の見解で次に

class UserSelectForm(forms.Form): 
    users = forms.ChoiceField(label="Select user") 

ある方法です

selectform = UserSelectForm() 
selectform.fields['users'].choices = user_tuple 

正常に表示されますが、フォームを送信しようとしたときに有効な選択を選択してもava ilable choicesエラー。

これは、あなたが本当に手動で、その後の選択肢を決定する必要がある場合は、あなたがのために初期化のための要件として、それらを含める必要があり

if request.method == 'POST' and 'preview' in request.POST: 
    selectform = UserSelectForm(request.POST) 
    if selectform.is_valid(): 
     user_email = selectform.cleaned_data['users'] 
     print user_email 
     return HttpResponseRedirect('/') 
+0

でそれを呼び出しますフォームの選択肢を提供します。ビューに追加することはできず、フォームのすべてのインスタンスに対して機能するとは限りません(下部スニペットで別のフォームを使用しています)。 – Sayse

+0

APIコールとJSONレスポンスを使用したビュー私はこれらの選択肢もデータベースから取得していません。この問題をどのように解決するにはどうすればよいでしょうか? –

+0

問題を再現するために必要な最小限のコードは投稿していません。あなたの投稿を編集してください。 –

答えて

0

私が送信されたフォームからのドロップダウン選択された値を取得しようとしているところでありますフォーム

class UserSelectForm() 
    def __init__(self, choices, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.fields['users'].choices = choices 

は、次にあなたが本当にactuallする必要が選択肢

UserSelectForm(user_tuple, request.POST or None) 
関連する問題