如何在 Django 中设置 Django-Select2 小部件的初始值

Posted

技术标签:

【中文标题】如何在 Django 中设置 Django-Select2 小部件的初始值【英文标题】:How to set initial value of Django-Select2 widget in Django 【发布时间】:2017-12-30 05:22:45 【问题描述】:

我正在为一个字段使用 django-select2 插件,该插件允许用户从数据库中的列表中选择一个机构(由 AJAX 驱动),它工作正常。这是forms.py中的字段

    institution = forms.CharField(
    widget = ModelSelect2Widget(
        queryset=Institution.objects.all(),
        attrs='class': 'form-control',
        model=Institution,
        search_fields=['name__icontains'],
        max_results=500,
    ),

使用相同的表格,用户可以编辑/更改之前选择的学院。 但是,为此,我想将该字段的初始选择值设置为先前选择的机构。 这给我带来了很多麻烦,因为尽管尝试了很多事情,但我无法为插件设置初始值。

理想情况下,我希望在不使用任何 javascript(仅使用 Django 表单选项)的情况下设置插件的初始值,例如:

current_instutition = Institution.objects.get(user=page_user)
form.fields['institution'].initial = current_institution  

(以上不行)

我尝试使用 Select2 占位符选项在页面加载期间使用以下 Javascript 代码手动设置:

$("#id_institution").djangoSelect2(
                    placeholder: 
                        id: '123',
                        text: 'My Institution'
                        
                    );

这似乎根本没有做任何事情。(插件仍在加载,带有一个空(或没有)占位符)。我不确定 django-select2 是否覆盖了手动 Select2 选项。

感谢任何帮助。谢谢!

【问题讨论】:

尝试在模型中定义一个default。 Select2 也可以通过 JS 更新,但不应该。如果你愿意,我可以给你看。我在我的项目的某个地方有它。另一种方法是在加载表单并在那里定义某些内容时加载initial_data 你得到答案了吗?? 【参考方案1】:

您的institution 字段是CharField,而不是ModelChoiceField。这就是这条线不正确的原因:

form.fields['institution'].initial = current_institution  

【讨论】:

以上是关于如何在 Django 中设置 Django-Select2 小部件的初始值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中设置 celeryconfig 文件

如何在 django 中设置健康检查页面

如何在 Django 模板中设置背景图像?

如何在 PyCharm 中设置 Django 项目

如何在没有模型的 Django 表单中设置空白=假

如何在 Django 表单输入字段中设置事件处理程序