0

我一直在尝试使用 django-select2 小部件使用多项选择

第 1 步:我安装了 django-select2 使用pip install django-select2

第 2 步:将其添加到已安装的应用程序中

INSTALLED_APPS = [
...
django_select2
...
]

第 3 步:我将以下内容添加到settings.py

SELECT2_JS = "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.12/js/select2.min.js"
SELECT2_CSS = "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.12/css/select2.min.css"
SELECT2_I18N_PATH = "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.12/js/i18n"

第 4 步:我尝试使用小部件

from django_select2.forms import Select2MultipleWidget
class ClientForm(AppModelForm):

    class Meta:
        model = Client
        fields = "__all__"
        exclude = ['client_website']
        widgets = {
            'point_of_contact': Select2MultipleWidget
        }

第 5 步:只渲染表单,没有任何类型的循环

{{ client_form }}

结果是

在此处输入图像描述

没有样式应用于选择。

我还尝试在 head 标签中包含样式和脚本(没有帮助)。

我相信小部件正在工作,因为当我从 切换Select2MultipleWidget到 时Select2Widget,它会变为单选

<select name="point_of_contact" lang="None" data-minimum-input-length="0" data-theme="default" data-allow-clear="true" data-placeholder="" id="id_point_of_contact" class="django-select2" multiple="">
  <option value="2">Test</option>

  <option value="1">Tester</option>

</select>

以上是django为多选小部件渲染的html

请帮助获取 django-select2 的功能

4

1 回答 1

1

默认情况下SELECT2_JSSELECT2_CSS指向相应的 Cloudflare CDN。当您想要从 CDN 加载特定版本或想要从本地存储加载时使用它。

确保将 select2 url 模式添加到主 urls.py:

urlpatterns = [
    path("select2/", include("django_select2.urls")),
    # other patterns
]

并在模板文件中添加表单资产:

<!-- To render stylesheet link tags of select2 -->
{{ client_form.media.css }}

<form method="POST">
    {% csrf_token %}
    {{ client_form }}
    <input type="submit">
</form>

<!-- Add JQuery script -->
<!-- To render script tags of select2 -->
{{ client_form.media.js }}

安装和快速入门指南可在此处获得:
https ://django-select2.readthedocs.io/en/latest/#installation
https://django-select2.readthedocs.io/en/latest/#quick-start

Django 表单资产:https ://docs.djangoproject.com/en/3.2/topics/forms/media/

于 2021-11-06T18:47:58.087 回答