ModelForm 和 ModelSelect2Widget (django-select2)

fus*_*596 3 python django django-forms django-select2

我有一个 ModelForm,其中包含 django-select2 中的 ModelSelect2Widget

\n\n

https://github.com/applegrew/django-select2

\n\n

遵循此处的文档:

\n\n

https://django-select2.readthedocs.io/en/latest/django_select2.html#django_select2.forms.ModelSelect2Widget

\n\n

表格.py

\n\n
class RentalForm(forms.ModelForm):\n\n\n    name = forms.ChoiceField(\n            widget=ModelSelect2Widget(\n                model=ldap_data,\n                search_fields=[\'user__icontains\']\n            )\n        )\n    date_start = forms.CharField(label="Datum Ausleihe", help_text="", widget=forms.TextInput(attrs={\'class\': \'form-control form-control-sm\', \'placeholder\': \'01.01.2019\' }))\n    date_end = forms.CharField(label="Datum R\xc3\xbcckgabe", help_text="", widget=forms.TextInput(attrs={\'class\': \'form-control form-control-sm\', \'placeholder\': \'01.01.2019\' }))\n\n    class Meta:\n        model = Rental\n        fields = [\'device\', \'name\', \'date_start\', \'date_end\',]\n
Run Code Online (Sandbox Code Playgroud)\n\n

模型.py

\n\n
class ldap_data(models.Model):\n    user = models.CharField(max_length=1024)\n\n    def __str__(self):\n        return self.user\n
Run Code Online (Sandbox Code Playgroud)\n\n

ldap_data 包含大约 100 个条目。

\n\n

在我看来,一切看起来都很好,但在渲染的模板中,下拉列表中没有可用的数据name

\n\n

Google Chrome 中的控制台登录显示:

\n\n
select2.min.js:1 Uncaught ReferenceError: jQuery is not defined\n    at select2.min.js:1\n    at select2.min.js:1\n(anonymous) @ select2.min.js:1\n(anonymous) @ select2.min.js:1\ndjango_select2.js:9 Uncaught ReferenceError: jQuery is not defined\n    at django_select2.js:9\n    at django_select2.js:11\n
Run Code Online (Sandbox Code Playgroud)\n

rit*_*lew 5

您是否遵循了入门部分中的所有步骤?

  1. 将 django_select2 添加到项目设置中的 INSTALLED_APPS 中。

  2. 如果您使用任何 ModelWidgets,请将 django_select 添加到您的 urlconf:

    url(r'^select2/', include('django_select2.urls')),
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将 CSS 添加到 Django 模板的头部:

    {{ form.media.css }} 
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将 JavaScript 添加到 Django 模板主体的末尾:

    {{ form.media.js }}
    
    Run Code Online (Sandbox Code Playgroud)

此外,似乎存在模块本身未提供的外部依赖项:

外部依赖

jQuery 版本 2 这不包含在包中,因为预计在大多数情况下它已经可用。