Python 用Db数据填充Django表单字段数据

Python 用Db数据填充Django表单字段数据,python,django,django-views,django-forms,Python,Django,Django Views,Django Forms,我正在尝试用Db对象中的数据预填充表单字段。如何设置表单、视图和模型以用这些数据填充字段 目标是让用户只选择从对象查询的数据。例如,活动中有乐队在演奏,用户从活动中选择他们最喜欢的乐队 我试图在文档中查找form.data,但似乎找不到我要查找的内容 谢谢 假设您的事件模型有多个键,窗体和视图的布局如下所示: forms.py: class EditEventForm(forms.ModelForm): def __init__(self, *args, **kwargs):

我正在尝试用Db对象中的数据预填充表单字段。如何设置表单、视图和模型以用这些数据填充字段

目标是让用户只选择从对象查询的数据。例如,活动中有乐队在演奏,用户从活动中选择他们最喜欢的乐队

我试图在文档中查找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
注意:您需要根据自己的需求调整表单中的queryset获取

views.py:

form = EditEventForm(instance=event)

此外,根据dcrodjer给出的建议,继续阅读一些关于实现的文本

通过向表单传递参数,您可以获得更多的自定义

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