我正在尝试使用ModelChoiceFiel
窗口小部件呈现MultipleHiddenInput
,但该模板根本不会生成任何输入。
以下是我的尝试:
class PresetSelectForm(forms.Form):
presets = forms.ModelChoiceField(queryset=Preset.objects.none(), widget=forms.MultipleHiddenInput())
def __init__(self, presets, *args, **kwargs):
super(PresetSelectForm, self).__init__(*args, **kwargs)
self.fields['presets'].queryset = presets
在模板中我使用以下内容:
{% csrf_token %}
{{ form }}
生成了csrf令牌输入,但没有任何内容适用于{{ form }}
。
我错过了什么?
修改:我在视图中包含了我正在使用的基本和相关代码。它只是FormView
,因此会自动创建form
对象。
class PresetSelectView(FormView):
form_class = PresetSelectForm
重写方法包括:get_form_kwargs
,get_context_data
,form_valid
,form_invalid
和dispatch
。
我想值得一提的是,我在这些方法的任何地方都没有使用form
个实例,form_valid
除外,form.cleaned_data['presets']
但我没有修改form
所有
以下是覆盖get_context_data
方法:
def get_context_data(self, **kwargs):
request = self.request
context = super(PresetSelectView, self).get_context_data(**kwargs)
# now some lines retrieving models
# then we attach some additional attributes to the instances of some of these models (these attributes will be used in the template)
context.update({...})
return context