我想用一個Db對象的數據預填充表單字段。如何設置表單,視圖和模型以填充此數據的字段?用Db數據填充Django表單字段數據
目標是讓用戶只選擇從對象查詢的數據。防爆。一個事件有樂隊演奏,用戶從事件中選擇他們最喜歡的樂隊。
我試圖尋找form.data的文檔 - 但似乎無法找到我在找什麼。
謝謝!
我想用一個Db對象的數據預填充表單字段。如何設置表單,視圖和模型以填充此數據的字段?用Db數據填充Django表單字段數據
目標是讓用戶只選擇從對象查詢的數據。防爆。一個事件有樂隊演奏,用戶從事件中選擇他們最喜歡的樂隊。
我試圖尋找form.data的文檔 - 但似乎無法找到我在找什麼。
謝謝!
假設你的活動模式有樂隊爲許多-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
一些文字,你可以通過參數來獲得多一點的定製表單
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