2012-08-13 57 views
10

ChoiceFieldを使用してデータベースの値のドロップダウンリストを作成する際に問題が発生しています。ここでは、コードDjango ChoiceFieldデータベース値から読み込み

from django import forms 
from testplatform.models import ServiceOffering 

class ContactForm(forms.Form): 

    subject = forms.ChoiceField(queryset=ServiceOffering.objects.all()) 
    #subject = forms.ModelMultipleChoiceField(queryset=ServiceOffering.objects.all()) 

#subject ....ラインが機能するのスニペットですが、私はラインChoiceField(クエリセット....)私は次のエラーを取得するを使用する場合。

__init__() got an unexpected keyword argument 'queryset' 

答えて

24

ChoiceFieldにはクエリーセットがありません。あなたは、データベースからドロップダウンリストに移入したい場合、私はすべて合格することをお勧めしますよ、クエリセットに

+0

優秀なあなたのAPIで処理するために必要なものに依存します。ドロップダウンボックスに------をデフォルト値として表示します。それを変更することはできますか?ありがとう! – Oli

+1

フィールドがオプションの場合は、フォームのフィールドを 'required = True'に設定してフィールドを削除します。 –

3

を探していますviews.pyからテンプレートへの単一オブジェクトの値。あなたそれをこのように行うことができます。データベースからすべての値をフェッチ] 1:

objectlist = ModelName.objects.all() 

あなたがドロップダウンリストにソートされたリストが必要な場合は、次の操作を行います。

objectlist = ModelName.objects.all().order_by('fieldname') 

あなたがdistinctlistをしたい場合は、これを行います:

objectlist = ModelName.objects.distinct('fieldname') 

2]これは、テンプレートを使用してこの 'objectlist' レンダーパス

return render(request, 'template.html', {'objectlist': objectlist}) 

3]テンプレートではselectタグを使用し、user forループではobjectlistを反復処理します。御馳走を働いた - オプションタグで

<select> 


{% for element in objectlist %} 


<option value={{ element.id }}>{{ element.name }} 



    </select> 

値は、あなたが

+0

真剣に?リンクとわずかな書式の変更で私の答えを再投稿することは本当に必要でしたか? –

+0

申し訳ありませんが、私は答えのウィンドウを開いて、そのリンクに行ってきました。私が戻って来たら、あなたはすでにそれを投稿しています。もう一度申し訳ありません。私は明白に私の答えを削除する方法を知らない –

+0

ありがとう - それを持って..私は------表示されないように私は初期値を使用することができますか? – Oli

5

をサポートしていませんModelChoiceFieldLink Here

ChoiceFieldを使用ModelChoiceField

関連する問題