2011-01-20 55 views
7

我想用一個Db對象的數據預填充表單字段。如何設置表單,視圖和模型以填充此數據的字段?用Db數據填充Django表單字段數據

目標是讓用戶只選擇從對象查詢的數據。防爆。一個事件有樂隊演奏,用戶從事件中選擇他們最喜歡的樂隊。

我試圖尋找form.data的文檔 - 但似乎無法找到我在找什麼。

謝謝!

回答

4

假設你的活動模式有樂隊爲許多-2-許多關鍵的表單和視圖佈局將如下所示:

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 

注意:您需要根據您的需求調整表單中的查詢集。

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