我想用一个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