2011-01-20 22 views
7

Dbオブジェクトからのデータでフォームフィールドをあらかじめ入力しようとしています。どのようにフォーム、ビュー、およびモデルを設定して、このデータでフィールドを埋めるのですか?DbデータでDjangoフォームフィールドデータを入力してください

目的は、オブジェクトから照会されたデータのみを選択させることです。 Ex。イベントにはバンドが再生されており、ユーザーはそのイベントでお気に入りのバンドを選択します。

私はform.dataのためのドキュメントを見てみましたが、私が探しているものを見つけることができませんでした。

ありがとうございます!

forms.py:

class EditEventForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(EditEventForm, self).__init__(*args, **kwargs) 
     self.fields['bands'].queryset= \ 
         Bands.objects.filter(Q(name='band1')|Q(name='band2')) 
    class Meta: 
     model = Event 

注:必要があるだろうが、あなたのイベントモデルを想定

答えて

4

は、などの多くの-2-多くのキーバンドを持って次のように、フォームやビューのレイアウトは次のようになりますフォームのクエリセットフェッチを調整して要件に合わせます。

views.py:

form = EditEventForm(instance=event) 

また、dcrodjerによって与えられた提案に沿って、先に行くとあなたがに引数を渡すことで、もう少しカスタムを得ることができますModelMultipleChoiceField

1

を実装する上でいくつかのテキストを読みますフォーム

class SelectBandForm(forms.Form): 
def __init__(self, event, *args, **kwargs): 
    super(EditEventForm, self).__init__(*args, **kwargs) 
    self.fields['bands'] = forms.ModelChoiceField(label="Whats your favorite band?", 
       empty_label="Select a Band" , querset=Bands.objects.filter(event=event)) 

その後、あなたの意見で

if request.method =="POST": 
    form = SelectBandForm(event, request.POST) 
    if form.is_valid(): 
     #do stuff 
else: 
    form = SelectBandForm(event) 
    #show it 
関連する問題