如何在select控件中设置初始值?
How to setup the initial value in select control?
我正在尝试在表单上设置 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 :
) 我希望将这个用作初始值 (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 -->
感谢您的宝贵时间。
您必须将初始值设置为 form.field['miembro']
而不是小部件,就像您对 form.fields['meta']
所做的那样。
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:
# this line here
form.fields['miembro'].initial = self.pipol[0]
form.fields['meta'].initial = self.meta
form.fields['meta'].widget.attrs['disabled'] = True
return form
Select 输出为:
<select id="id_miembro" name="miembro">
<option value="">---------</option>
<option value="2" selected="selected">***@***.mx</option>
</select>
我正在尝试在表单上设置 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 :
) 我希望将这个用作初始值 (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 -->
感谢您的宝贵时间。
您必须将初始值设置为 form.field['miembro']
而不是小部件,就像您对 form.fields['meta']
所做的那样。
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:
# this line here
form.fields['miembro'].initial = self.pipol[0]
form.fields['meta'].initial = self.meta
form.fields['meta'].widget.attrs['disabled'] = True
return form
Select 输出为:
<select id="id_miembro" name="miembro">
<option value="">---------</option>
<option value="2" selected="selected">***@***.mx</option>
</select>