我正試圖在窗體上設置一個select
控件,但未達到預期結果。對我而言,最奇怪的是它在前一個控件中使用同一類型。如何在選擇控制中設置初始值?
這是所涉及的功能:
class ProofMSPE(CrearEvidencia):
model = VRL02
form_class = VRL02Form
def get_form(self, form_class):
form = super(ProofMSPE, self).get_form(form_class)
form.fields['miembro'].queryset = self.pipol
if self.pipol.count() == 1:
form.fields['miembro'].widget.initial = [self.pipol[0].id]
form.fields['meta'].initial = self.meta
form.fields['meta'].widget.attrs['disabled'] = True
return form
的meta
的控制是select
和我得到了預期的行爲,即自動選擇爲初始值(form.fields['meta'].initial = self.meta
在礦井下一行,它禁用(form.fields ['meta']. widget.attrs ['disabled'] = True
)。這是在渲染模板輸出:
<!-- begin meta-->
<div class="row">
<div class="col s12 input-field">
<select id="id_meta" name="meta" disabled>
<option value="">---------</option>
<option value="1" selected="selected">JOCE-1</option>
<option value="2">VEL-1</option>
<option value="3">VEL-2</option>
<option value="4">VEL-3</option>
</select>
<label for="id_meta">Evidencia para la meta</label>
</div>
</div>
<!-- end ./meta -->
在另一方面,與pipol
場我無法得到相同的結果的差異,順便說一句,這個領域有一些邏輯:我得到一個過濾列表的人有相同的標準和小部件創建這個列表(form.fields['miembro'].queryset = self.pipol
)。
到目前爲止好,但如果查詢集只有一個結果(if self.pipol.count() == 1 :
),我想,這其中用作inital值(form.fields ['member']. Widget.initial = [self .pipol [0] .id]
),但是這是行不通的。
這是當模板被渲染看似:
<!-- begin pipol-->
<div class="row">
<div class="col s12 input-field">
<select id="id_miembro" name="miembro">
<option value="" selected="selected">---------</option>
<option value="2">***@***.mx</option>
</select>
<label for="id_miembro">Seleccione el usuario</label>
</div>
</div>
<!-- end ./pipol -->
感謝您的時間。
創建自定義窗口小部件用於此目的(從__django.forms.Select__繼承) – madzohan