【发布时间】:2021-07-24 03:10:40
【问题描述】:
我想在我的表单视图中订购一个列表,并在这里找到了这篇文章:
How do I specify an order of values in drop-down list in a Django ModelForm?
所以我编辑了我的代码并添加了specialty = forms.ModelChoiceField(queryset ='...')这一行
然后我重新加载表单,小部件看起来很时髦。我检查了html代码,专业的顺序确实正确!但是它错过了添加表单控件类的小部件定义。我不确定为什么。如果我删除了 special = form.ModelChoiceField 行,那么除了下拉列表的顺序不正确(按名称字段按字母顺序排列)之外,一切看起来都很棒
不知道为什么它缺少小部件定义,甚至附加了类表单控件或 tabindex。猜测 special = forms.ModelChoiceField 以某种方式覆盖它?
class ProviderForm(forms.ModelForm):
specialty = forms.ModelChoiceField(queryset = Specialty.objects.order_by('name')) #added this
def __init__(self, *args, **kwargs):
super(ProviderForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-md-6'
self.helper.field_class = 'col-md-6'
self.fields['ptan'].required = False
self.helper.layout = Layout(
Field('...'),
Field('specialty'),
FormActions(
Submit('save', 'Save'),
Button('cancel', 'Cancel'),
Button('terminate', 'Terminate', css_class="btn-danger"),
),
)
class Meta:
model=Provider
fields = (
'...',
'specialty'
)
widgets = {
'specialty':Select(attrs={
'tabindex':'4',
'class':'form-control'
}),
}
【问题讨论】: