如何在渲染django模板时动态设置表单选择字段的初始值

Posted

技术标签:

【中文标题】如何在渲染django模板时动态设置表单选择字段的初始值【英文标题】:How can you dynamically set initial value of form select field at the time of rendering django template 【发布时间】:2020-12-14 14:37:29 【问题描述】:

我需要多次渲染选择字段,每个字段都有预选值。

现在我的问题是: 如何在渲染django模板时动态设置django form selectfield的初始值??

我的表格:

class RequestProdApvr(forms.Form):
    product = forms.ModelChoiceField(queryset=Product.objects.all().order_by('code'), label='', required=False)

我必须在列表视图的多行中使用此表单,并根据保存的数据预填充值。

我在 SO 中搜索了解决方案,但没有一个符合我的要求...

Django. Initial value of Choice Field dynamically

Dynamically set default form values in django

因此我在这里发布单独的问题...

【问题讨论】:

【参考方案1】:

您必须遍历选择选项并检查当前对象是否等于后端选项,以便您可以将其标记为选中:

<select name="field_name" class="form-control" id="id_field_name">
    % for id_obj, obj in form.field_name.field.choices %
    % if obj == context_obj.property%
    <option value="id_obj" selected="">obj</option>
    % else %
    <option value="id_obj">obj</option>
    % endif %
    % endfor %
</select>

我猜这就是你想要达到的目标。

【讨论】:

以上是关于如何在渲染django模板时动态设置表单选择字段的初始值的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何添加动态类以选择表单中的选项

Django - 在模板中呈现日期字段

Django 模板根据条件渲染每个表单字段

django - 表单中的动态选择字段

在最终渲染之前替换django模板中的char

如何使用 django 表单/模型来表示字段之间的选择?